2014-08-31 51 views
2

我總是使用一個ActionListenr作爲按鈕,但是我發現一個組件可以被分配多個動作偵聽器。我們怎樣才能做到這一點,什麼是使用它 在此先感謝使用多個actionlistener作爲按鈕

+1

''我們如何做到這一點......「 - 只需將一個以上的ActionListener添加到JButton。 '「......它有什麼用處」 - - 無論你想用什麼。 – 2014-08-31 11:26:43

回答

2

我們怎樣才能做到這一點

這是比較容易的部分,創造ActionListener的多重實例,並使用addActionListener。人們會認爲他們都是不同的...

,什麼是使用它

這是一個更難回答的問題。人們可能會認爲,如果您想將更新的邏輯應用於流程但不能擴展現有功能,則可以使用多個偵聽器...

假設您有一個登錄表單。你有一個「登錄」按鈕。你寫一個ActionListener來收集所需的細節並驗證它們。

之後,您決定在該過程中禁用該按鈕。通常情況下,您可以將該功能添加到原始代碼中,但由於某種原因(不是您的代碼等),您無法這麼做。

您可以創建另一個ActionListener,其唯一目的是在按下按鈕時禁用按鈕。

舉個例子...

3
c.addActionListener(actionlistener1); 
c.addActionListener(actionlistener2); 

,如果你需要做的不一定相關的幾個動作是非常有用的。例如,改變一個按鈕的背景顏色與在Logger中追加動作,並通知控制器該按鈕已被按下,等等。

這允許模塊化:每個actionListener可以處理一個非常特定的任務對於一組組件。例如,您可以爲所有按鈕編寫默認的actionListener,併爲具有相同行爲的一組按鈕編寫特定的按鈕。

最後,有些對象在實例化時已經有監聽器(JButton有默認的FocusListener,JScrollPane默認爲MouseWheelListener等)。這使您可以將其他行爲添加到組件中,而不會覆蓋以前的組件。