我有一些JButton并且我试图在for循环中添加它们的动作侦听器但是它给出了空指针异常,但是如果我逐个添加它们就不会出现问题。我想知道我的错误点是什么。感谢。
JButton[ ] myButtonArray = { but1, but2, but3 };
ButtonHandler bh = new ButtonHandler();
for (JButton cur : myButtonArray) { // I tried standard for loop as well.
cur.addActionListener(bh);
}
答案 0 :(得分:5)
对我来说效果很好..试试这个演示
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 !");
}
}
答案 1 :(得分:1)
您确实初始化了but1
,but2
和but3
?因为这是你的nullpointerexception最可能的来源。
答案 2 :(得分:1)
我猜你的至少一个按钮是空的 - 即but1,but2或but3(或所有按钮)都没有初始化。瓦时