[英]Composing Swing Components: How do I add the ability to add 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.