2012-10-12 71 views
0

我知道在java中放置actionlistener的最佳做法是什麼?例如在我的班級a是我的gui,(設計),那麼班級b將是我的行動偵探?或者它們都在一頁中更好? 謝謝。gui和actionlistener的最佳做法

+2

退房How to use Actions參見[這個問題](http://stackoverflow.com/q/12463345/1076463)。我想我的答案也適用於這種情況。使用'Action'而不是'ActionListener' – Robin

回答

3

這取決於。如果您想對幾個UI組件使用您的ActionListener:按鈕,菜單項...,那麼在單獨的類中執行它將是適當的。此外,如果actionPerformed方法中的代碼有很多行,則可以單獨執行。否則,如果您的班級中沒有很多UI組件,那麼您可以將ActionListener定義爲匿名實現,並將其直接附加到組件。

button.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
    // ... 
    } 
}); 
2

我不確定我明白你的要求。但是這裏有一個鏡頭:從設計的角度來看,最好讓第二個類監聽由GUI類發起的事件(這些將是你的控件)。

讓我們稱之爲第二類叫做Controller。當控制器意識到控件上發生了什麼事情時,它會開始執行一系列任務(如檢索數據,提交信息或驗證GUI等信息)。

所以從接口的角度來看,你的Controller應該是你的ActionListener。

3

我不知道你在問什麼,但一般來說,如果我的actionListener很小,說幾十行甚至更少,我會把它作爲一個匿名實現保存在我的GUI組件類中。

button.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent event) { 
     // ... 
    } 
}); 

如果我的actionListener很大,我會讓它成爲一個單獨的類。

public class ButtonListener implements ActionListener { 

    private JPanel panel; 

    public ButtonListener(JPanel panel) { 
     this.panel = panel; 
    } 

    public void actionPerformed(ActionEvent event) { 
     // ... 
    } 

} 
1

羅賓指出,如果可能的話,你應該Action API。

它提供了自包含的,可重用的動作句柄,可以應用於多個組件。

如果您想在UI上的多個位置提供相同的操作,它們特別有用。考慮複製和粘貼,例如,在主菜單上,彈出窗口中或者在工具欄上這樣做會很有用,這是很多重複的代碼。

的信息