2011-12-13 13 views
0

JButtonがいくつかあり、forループでアクションリスナを追加しようとしていますが、nullポインタ例外が発生しますが、1つずつ追加すると問題は発生しません。私の間違った点は何か不思議です。ありがとう。ループ内にボタンハンドラを追加する

JButton[ ] myButtonArray = { but1, but2, but3 }; 
ButtonHandler bh = new ButtonHandler(); 

for (JButton cur : myButtonArray) { // I tried standard for loop as well. 
    cur.addActionListener(bh); 
} 
+0

例外を含むスタックトレースを投稿してください。 –

+0

'ButtonHandler'のコードを表示できますか?それは何の延長ですか? – Jonas

+0

ButtonHandlerに問題はありません:but1.addActionListener(bh); – NotCamelCase

答えて

5

ワークス..

enter image description here

package sof; 

import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 

public class CustomLayoutFrame{ 
    public static void main(String args[]) { 
     JFrame frame = new JFrame("Custom Layout Frame"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.setLayout(new GridLayout(3,1)); 

     JButton but1 = new JButton("Button1"); 
     JButton but2 = new JButton("Button2"); 
     JButton but3 = new JButton("Button3"); 

     JButton[ ] myButtonArray = { but1, but2, but3 }; 
     ButtonHandler bh = new ButtonHandler(); 

     for (JButton cur : myButtonArray) { // I tried standard for loop as well. 
      cur.addActionListener(bh); 
     } 

     frame.add(but1); 
     frame.add(but2); 
     frame.add(but3); 

     frame.setSize(300, 150); 
     frame.setVisible(true); 
     } 
} 

class ButtonHandler implements ActionListener{ 
    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     System.out.println(((JButton)(arg0.getSource())).getText() + " Clicked !"); 

    } 
} 
+0

それは私のものと同じです、ちょうど私のボタンはテキストを持っていて、それらはレイアウトに置かれます。 – NotCamelCase

+0

大丈夫、それは私のためにもうまくいきます。私の誤りが何であるかを私に教えてください。 – NotCamelCase

+0

@berkantk - great – bragboy

1

そして、あなたはbut1but2but3を初期化したのですか?これは、あなたのnullpointerexceptionの最も可能性の高いソースです。私のために完全に罰金

+0

私はそれらを初期化しました。古典的に追加していないのであれば、同じエラーは出ませんか? – NotCamelCase

1

このデモを試してみてください、私はあなたのボタンのうちの少なくとも一方がnullの推測 - すなわちbut1、but2、またはbut3(またはそれらのすべてを)は初期化されていません。 Wh

関連する問題