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

时间:2012-04-10 03:02:15

标签: java eclipse windowbuilder

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

要制作简单的Swing应用程序,我通常会创建一个类并扩展JFrame。我使我的Swing组件私有类变量。这允许我添加一个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()),而不是私有类变量。因此,由于范围的原因,我不能像我习惯的那样使用ActionListeners,因为ActionPerformed()看不到Swing变量。

有人可以建议如何克服这个问题吗?

1 个答案:

答案 0 :(得分:4)

什么阻止您将这些局部变量重构为字段?关于WindowBuilder的最好的事情之一是能够在某种程度上解析手写代码。

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