我的问题特定于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变量。
有人可以建议如何克服这个问题吗?
答案 0 :(得分:4)
什么阻止您将这些局部变量重构为字段?关于WindowBuilder的最好的事情之一是能够在某种程度上解析手写代码。
此外,Window Builder中还有一个配置选项可用于为控件创建字段变量。在Eclipse中查看,Preferences->WindowBuilder->Swing->Code generation
;)