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

标签 java swing event-handling

我有一些 JButton,我试图在 for 循环中添加它们的 Action 监听器,但它给出了空指针异常,但是如果我将它们一一添加,则不会出现问题。我想知道我的错误点是什么。谢谢。

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

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

最佳答案

对我来说工作得很好..试试这个演示

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

    }
}

关于java - 在循环中添加按钮处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8495149/

相关文章:

java - 将查询列表插入组合框的问题

java - 如何声明 Java API 中的方法已弃用我的本地项目?

java - 在充满绘制形状的 JPanel 上抓取并拖动滚动

java - 从线程更新 Swing GUI

java - 追加来自另一个类的 Textarea 结果

java - JRadioButtonMenuItem 不是 JRadioButton 扩展

c++ - 在类中过滤Qt中的鼠标点击

C++ 事件/消息系统

java - 以观察者模式集中传播事件

java - "Quick and Dirty"Java中的人脸识别和数据库存储/查找