繁体   English   中英

Java / Eclipse(WindowBuilder 插件)- 如何有效使用 Swing Actionlisteners?

[英]Java / Eclipse (WindowBuilder plugin) - how do I effectively use Swing Actionlisteners?

我的问题特定于 Eclipse 和 Swing WindowBuilder 插件。

为了制作简单的 Swing 应用程序,我通常创建一个 class 并扩展一个 JFrame。我将我的 Swing 组件设为私有 class 变量。 这允许我添加一个 Actionlisteners 并访问 actionPerformed() 中的 swing 组件,如下所示:

public class MyClass() extends JFrame implements ActionListener {
    private JButton btnClickMe = new JButton("Click me");

    public MyClass() {
        super("title");
        this.setLayout(null);
        btnClickMe.setBounds(1,1,100,100);
        this.add(btnClickMe);
        btnClickMe.addActionListener(this);
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        Object source = event.getSource();
        if(source == btnClickMe) { // do something }
    }

    public static void main(String[] args) {
        new MyClass();
    }
}

默认情况下,WindowBuilder 插件会创建 Swing 个组件变量,我猜是在构造函数(public MyClass())中创建的,而不是私有的 class 个变量。 结果,由于 scope,我无法按照我习惯的方式使用 ActionListeners,因为 Swing 变量对 actionPerformed() 不可见。

谁能建议如何克服这个问题?

是什么阻止您将这些局部变量重构为字段? WindowBuilder 的一大优点是能够在某种程度上解析手写代码。

此外,在 Window Builder 中有一个配置选项可以为控件创建字段变量。 在 Eclipse 中查找, Preferences->WindowBuilder->Swing->Code generation ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM