Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在循环中添加按钮处理程序_Java_Swing_Event Handling - Fatal编程技术网

Java 在循环中添加按钮处理程序

Java 在循环中添加按钮处理程序,java,swing,event-handling,Java,Swing,Event Handling,我有几个jbutton,并试图在for循环中添加它们的操作侦听器,但它会给出null指针异常,但是如果我逐个添加它们,就不会出现问题。我想知道我的错误观点是什么。谢谢 JButton[ ] myButtonArray = { but1, but2, but3 }; ButtonHandler bh = new ButtonHandler(); for (JButton cur : myButtonArray) { // I tried standard for loop as well.

我有几个jbutton,并试图在for循环中添加它们的操作侦听器,但它会给出null指针异常,但是如果我逐个添加它们,就不会出现问题。我想知道我的错误观点是什么。谢谢

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

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

你确实初始化了but1,but2和but3?因为这是最有可能导致nullpointerexception的原因。

对我来说效果非常好。。试试这个演示

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 !");

    }
}

我猜至少有一个按钮是空的-即but1、but2或but3或所有按钮都没有初始化。请发布包含异常的堆栈跟踪。您能显示ButtonHandler的代码吗?它扩展了什么?当我这样写时ButtonHandler没有问题:but1.addActionListenerbh;我确实初始化了它们,如果它们不是我经典地添加它们时,它不会给出同样的错误吗?我的也是一样,只是我的按钮有文本,它们被放置在布局上。好的,谢谢,它对我也很有效。让我知道我的错误是什么。在添加处理程序后,您已将按钮添加到框架中,我不这么认为,但这可能是问题所在吗?下面是我的例子:@berkantk:在初始化按钮后放这一行。JButton[]bs={左、右、中};在此上下文中,将按钮添加到框架是不相关的。