2012-01-24 15 views
-1

プログラムで作業していて、実行すると、43行目と84行目にNullPointerExceptionがあるというエラーが表示されます。これがコードです。私は43行目と84行目のコメントを書きました。私はMicrosoft Wordのようなワープロを作ろうとしています。Java - NullPointerException問題

import javax.swing.*; 
import java.awt.*; 

public class Graphics { 
    // listing all the components 
    JFrame f1; 
    JPanel colorspanel; 
    JPanel sizepanel; 
    JPanel fontpanel; 
    JPanel mainpanel; 
    JTextField Maintextfield; 
    JLabel colorlabel; 
    JLabel sizelabel; 
    JLabel fontlabel; 
    JButton colorbuttons[]; 
    JButton sizebuttons[]; 
    JButton fontbuttons[]; 

    Graphics() { 
     // making instances of panels 
     colorspanel = new JPanel(); 
     sizepanel = new JPanel(); 
     fontpanel = new JPanel(); 
     mainpanel = new JPanel(); 
     // setting the size of the panels 
     colorspanel.setSize(216, 144); 
     sizepanel.setSize(216, 144); 
     fontpanel.setSize(216, 144); 
     mainpanel.setSize(612, 756);  
     // making instances of button 
     colorbuttons = new JButton[9]; 
     sizebuttons = new JButton[14]; 
     fontbuttons = new JButton[9]; 
     // setting content for buttons 
     // colorbuttons 
     colorbuttons[0].setBackground(Color.black);//line 43 
     colorbuttons[1].setBackground(Color.red); 
     colorbuttons[2].setBackground(Color.blue); 
     colorbuttons[3].setBackground(Color.yellow); 
     colorbuttons[4].setBackground(Color.green); 
     colorbuttons[5].setBackground(Color.gray); 
     colorbuttons[6].setBackground(Color.DARK_GRAY); 
     colorbuttons[7].setBackground(Color.ORANGE); 
     colorbuttons[8].setBackground(Color.pink); 
     colorbuttons[9].setBackground(Color.magenta); 
     // sizebuttons 
     sizebuttons[0].setText("8"); 
     sizebuttons[1].setText("10"); 
     sizebuttons[2].setText("12"); 
     sizebuttons[3].setText("14"); 
     sizebuttons[4].setText("16"); 
     sizebuttons[5].setText("18"); 
     sizebuttons[6].setText("20"); 
     sizebuttons[7].setText("22"); 
     sizebuttons[8].setText("24"); 
     sizebuttons[9].setText("26"); 
     sizebuttons[10].setText("28"); 
     sizebuttons[11].setText("30"); 
     sizebuttons[12].setText("32"); 
     sizebuttons[13].setText("34"); 
     sizebuttons[14].setText("36"); 
     // fontbuttons 
     fontbuttons[0].setText("New Times Roman"); 
     fontbuttons[1].setText("Blackadder ITC"); 
     fontbuttons[2].setText("Andy"); 
     fontbuttons[3].setText("Buxton Sketch"); 
     fontbuttons[4].setText("Arial Black"); 
     fontbuttons[5].setText("Comic Sans MS"); 
     fontbuttons[6].setText("Old English Text MT"); 
     fontbuttons[7].setText("SketchFlow Print"); 
     fontbuttons[8].setText("Harlow Solid Italic"); 
     fontbuttons[9].setText("Algerian"); 
     f1.setVisible(true); 
    } 

    public static void main(String[] args){ 
     Graphics graphics = new Graphics();//line 84 

    } 

} 
+0

? – Mysticial

+1

完全なスタックトレースとは何ですか? – Jeffrey

+0

はいArrayOutofBoundsExceptionを修正しました –

答えて

2

あなたは配列を作成しましたが、何も配置しませんでした。配列にボタンを配置する必要があります。 NullPointerExceptionは、何かを参照しようとしましたが、メソッドまたはプロパティを持つオブジェクトではなく、nullの値が見つかりました。あなたのケースでは

Object x = new Object(); 
x.toString(); // we're in business 

対例

Object x = null; 
x.toString(); // NPE 

ためには、アレイの作成(2行以上を、ちょうど1行IMHO上のすべてを作成する)、それにボタンを置くことはありません。だからcolorButtons[0].whateverと呼ぶと、インデックス0の参照でwhateverにアクセスしようとしています。しかし、配列に何も入れなかったので、その参照はnullです。

はcolorbuttons配列には何も入れていないあなた

JButton[] colorButtons = new JButton[9]; // initialize array 
for (int i = 0; i < colorButtons.length; i++) { 
    JButton button = ... // initialize button each time thru 

    // do any common setup on the buttons 

    colorButtons[i] = button; // put the button in the array. 
} 
+0

JFrame f1も初期化されていないため、後で問題が発生します。 – Josh

+0

確かに一度に1つの問題があります... – hvgotcodes

+0

私は、彼が閉鎖された別の質問(http://stackoverflow.com/questions/8980984/java-nullpointerexpection-error)でそれについて尋ねたので、私はコメントを追加しました。 – Josh

2

のようなより多くの何かをします!もちろん、それはnullです。ここで :

for(int i=0; i<colorbuttons.length; i++) 
    colorbuttons[i] = new JButton(); 
3

あなたは新しいJButtonの配列を割り当てるが、あなたはその中の要素を割り当てません。

colorbuttons = new JButton[9]; 

対応があるはずです:あなたは、

for (int i = 0; i < 9; i++) { 
    colorbuttons[i]= new JButton(...); 
} 

そうでない場合ボタンの配列にスペースを割り当てますが、JButtonのそれぞれを実際には初期化することはありません。したがって、colorbuttons [0]はnull、colorbuttons [0] .blah()はNPEを引き起こします。

2

JButton配列が空です。あなたはそれを宣言しました。

ボタンを追加して配列に値を設定します。このような

何か:また `ArrayOutOfBoundsException`を取得する必要があります

colorbuttons = new JButton[9]; 
for (int i = 0; i < 9; i++) { 
    //Your logic here 
    colobuttons[i] = new JButton(); 
}