[英]Is there a more efficient way to handle button click events than several if statements?
所以,我會盡力解釋這個問題......
基本上,我有一個GUI,其主窗口上有幾個按鈕(可能大約10個)。 我將按鈕本身放在一個數組中,但是當涉及到處理每個按鈕的點擊事件時,根據點擊哪一個,會發生不同的事情。
而不是做這樣的事情:
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Button1Text") { /* do stuff */ }
else if(e.getActionCommand().equals("Button2Text") { /* do stuff */ }
else if(e.getActionCommand().equals("Button3Text") { /* do stuff */ }
else if(e.getActionCommand().equals("Button4Text") { /* do stuff */ }
}
點擊時是否有更有效的方法來處理每個按鈕的響應? 我們的想法是,無論何時點擊一個按鈕,都會打開一個新窗口,讓用戶執行與該按鈕相關的各種任務。 我想以某種方式將getActionCommand()
與Class.forName()
/ newInstance()
方法結合使用,但我不確定是否還有其他(或更簡單)方法可以執行此類操作。
您顯示的ActionListener有時被稱為“交換機監聽器”,您認為可以對其進行改進是正確的。 這是非常嚴格的代碼,使得調試和增強變得困難。
我認為最好不要讓GUI實現ActionListener,而是為每個按鈕類使用獨特的Actions(即AbstractActions),然后將相應的Action插入相應的按鈕。 要使用最小耦合進行插入,請考慮使用依賴注入Spring或Guice。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.