2011-02-08 9 views
0

私は単純なGUIを作成しようとしていますが、いくつかのエラーが発生しています。私は、3つのシンプルなボタンを作成し、それらが画面の横に並べて表示させるようにします。これをどうやってやりますか?nullPointerExceptionのソースが見つかりません

これまでの私のコードは次のとおりです。

public static void main(String[] args) { 
    JFrame frame = new JFrame ("JFrame"); 
    JPanel panel = new JPanel(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JButton buttons[] = new JButton[2]; 
    for(int i = 0;i<=buttons.length ; i++){ 
    panel.add(buttons[i]); 
    } 
    frame.getContentPane().add(panel); 
    frame.setSize(500, 500); 
    frame.setVisible(true); 
    } 
+0

よりも、彼らがもう少し便利なのですか? –

+2

これは問題の原因ではありませんが、forループは 'for(int i = 0; i

答えて

4

フム、私は思い出す場合は、Javaでオブジェクトの配列がnullの参照で初期化されます。あなたのために、パネルにnullを追加しています。

あなたがこれを行う必要があります:あなたがそれらを作成すると、あなたがちょうどそれらを追加することができた場合、ボタンの配列を使用する理由:

JButton buttons[] = new JButton[2]; 
for(int i = 0;i < buttons.length ; i++){ 
    buttons[i] = new JButton(/* whatever */); 
    panel.add(buttons[i]); 
} 

を再度、これは問題を提起しますか?

2

最初に配列内のボタンを初期化する必要があります。次の例のようにすることができます。

JButton buttons[] = new JButton[2]; 
for(int i = 0; i < buttons.length; i++){ 
    buttons[i] = new JButton("" + i); 
} 
for(int i = 0; i < buttons.length; i++){ 
    panel.add(buttons[i]); 
} 

問題は、あなたのすべてのボタンが最初にnullに初期化してしまうことがあります。また、コンポーネントにはnullを追加することはできません。

2

ボタンをパネルに追加する前に、ボタンを初期化する必要があります。

for(int i = 0;i<buttons.length ; i++){ 
    buttons[i] = new JButton(); 
    panel.add(buttons[i]); 
} 

また、私はループi < buttons.lengthの代わりi <= buttons.length

のために行われた変更のノートを取るここでは様々なJButtonが(here)を使用して、ちょっといい例です。これには、ImageIconをボタンに追加することも含まれます。エラーボタンです。

URL imgURL = JButtonDemo.class.getResource("Error.jpg"); 
ImageIcon icon = new createImageIcon(imgURL); // should check that imgURL is not null 
buttons[0] = new JButton("Error!",icon); 

これは、デバッガでコードをステップするとき、あなたは何を見ていますデフォルトJButton

関連する問題