java - AWT ActionListener 作为抽象类

标签 java class awt abstract final

我有一个用 Java 编写的带有 AWT GUI 的程序。我的问题是我在这个程序中有很多抽象类(ActionListener)。在这个抽象类中,我需要从主类调用属性。因此,目前我必须将所有需要的属性设置为最终属性。这可不太好。我的问题是如何从主类中调用属性(不将其设置为最终)。更好的代码风格是什么?

例如:

public class mainClass {
    TextField field1 = new TextField(10);
    (...)
    Button connect = new Button("Connecting...");
    (...)
    connect.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent ex) {
            methodFromTheMainClass(field1.getText());
            // How can I call the method methodFromTheMainClass?
         }
    });

    private void methodFromTheMainClass(String fieldContent) {
        (...)
    }
}

感谢您的帮助,并对我的英语表示抱歉。 :-/

最佳答案

final 关键字是一个非常好的解决方案几乎在所有可以使用它的地方 就你的情况来说,完全没问题。使用 final 关键字。

但是,如果您强烈希望使字段不是final(或者由于您的业务逻辑需要),只需创建一个内部(非静态)类,其中包含从本地抽象访问的所有字段类。

这是一个例子:

public class YourClass { 

    private class Container {
        private TextField field = new TextField();
        private Button connectButton = new Button("Connecting...");
    }

    private final Container container = new Container();

    private void establishConnection() {
        container.connectButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // connection code here

                container.field.setText("Connection established"); // access to an inner class
            }
        });
    }
}

关于java - AWT ActionListener 作为抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24011432/

相关文章:

java - 使用 fragment 按钮打开另一个 Activity

c++ - 为什么我的构造函数不会在循环执行时重新初始化变量?

java - 我可以使用逻辑或运算符来测试 if 语句中的两个条件吗?

java - 需要使用 JFileChooser 将整个文件夹导入 NetBeans 中的 JList 的帮助

java - 寻找单行删除多个子字符串

java - 如何在java中将图像转换为字节数组?

java - 尽管位置具有正确的 url,但未发生重定向

jquery - 如何从元素中获取第二个类名?

c# - 我如何设置返回以便它接受 class1 或 class2?

Java AWT 线程