[英]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.