2015-07-21 39 views
0

所以我想知道什麼是更好看的解決方案/什麼是差異以及什麼事情要考慮什麼時候作出決定有關製作任何幾個聽衆(1聽衆1按鈕)或只是1 ActionListener爲我的GUI中的所有按鈕(約10個按鈕),並通過actionevent.getSource() == buttonname獲取有關按下哪個按鈕的信息。ActionListeners:對於GUI中的每個按鈕,一個獨立的監聽器或一個監聽器用於所有按鈕?

你認爲哪種風格更好?爲幾個ActionListeners創建如此多的類別有什麼不利嗎?或者根本不重要?

順便說一句,在我的代碼即時通訊嘗試堅持模型 - 視圖 - 控制器組織。

+0

關注一下。[MVC的Java:如何做一個控制器設定聽衆給孩子一個班的視圖(HTTP://計算器。 com/questions/20027887/mvc-java-how-a-a-controller-set-listeners-to-the-children-classes-of-a-view)也看[這裏](http://codereview.stackexchange。 com/questions/48915/mvc-layout-which-way-to-add-listeners-is-better) –

+2

堅持單一責任原則:一個聽衆=一個按鈕。你真的不想要一個3頁長的包含if/else if鏈的方法。 –

回答

1

我更喜歡有不同的ActionListener類,但按功能分類將它們分組是我的經驗中的一個好習慣。

我還建議您依靠ActionEvent#getActionCommand()而不是ActionEvent#getSource(),因爲您可以處理來自不同UI組件的等效操作。

0
JButton button = new JButton("Button"); 
button.addActionListener(new ActionListener() 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
    //do your work here. 
    } 
}); 

這是每個按鈕的走向。

ActionListener具有多個if else或switch語句的接口對象既笨拙又難以維護。 此外,在每個按鈕按下時,程序必須通過一些匹配來了解按下了哪個按鈕。這非常昂貴。

所以,一個Button --->一個ActionListener是更好的方法。

0

我更喜歡使用lambda表達式,每次每個按鈕之一,例如:這裏

JButton button = new JButton("Button"); 
button.addActionListener(e -> //do your work here);