簡體   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