java - 在同一个类中为三个按钮实现 ActionListener

标签 java swing jbutton actionlistener

我在一个框架中有三个按钮,其中两个我想编辑一个字符串,它是主类(Lab2TestDrive)中的包公共(public)成员,类似于

 public class Lab2TestDrive{
...
String cale;

public static main void(String[] args){
    JButton button1.. button2.. button3..

}

我可以在 Lab2TestDrive 上实现 ActionListener,并重写其中的 actionPerformed(...) 方法吗?但如果我这样做,我不知道如何知道哪个按钮触发了 actionPerformed 方法。

我知道我可以单独开设一门类(class),

public class ButtonListener implements ActionListener {
    JButton button;
    ButtonListener(JButton button){
        this.button = button;
    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        if(button.getText().equals("Save")){

        };

    }
}

但是我不知道如何访问“cale”变量:(

最佳答案

首先:您不应该让您的 ActionEvent 被称为 arg0

然后:从技术上讲,您可以在一个类中完成所有工作。您的 ActionEvent 参数有一个名为 getSource() 的方法,它将为您获取触发事件的按钮。

理论上,您还可以创建第三个类来存储 cale 变量,并将对该类的引用作为监听器构造函数的参数。

但是,这似乎非常不直观。

您还可以向监听器的构造函数提供对 Lab2TestDrive 对象的引用,然后从 actionPerformed 中调用该类的方法。

说实话,这些选项都没有让我觉得是很好的编码实践,但它们都应该有效。

关于java - 在同一个类中为三个按钮实现 ActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43586186/

相关文章:

java - 使用助记符调用JButton按下动画

java - 按下按钮的actionPerformed()

java - Apache POI : is there a way to get the plus at the top instead of the bottom? 的单元格分组

java - 我可以在多个 jvm 上访问修改后的属性吗?

java - 将 KeyListener 与线程一起使用

java - 从 JTable 返回 JComboBox

java - jre安装目录奇怪

java - 在 Spring 配置文件中访问 maven 项目版本

java - 在Java中,我们如何知道构造函数中的super()何时完成?

java - 透明 JButton