我知道在java中放置actionlistener的最佳做法是什麼?例如在我的班級a是我的gui,(設計),那麼班級b將是我的行動偵探?或者它們都在一頁中更好? 謝謝。gui和actionlistener的最佳做法
0
A
回答
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上的多個位置提供相同的操作,它們特別有用。考慮複製和粘貼,例如,在主菜單上,彈出窗口中或者在工具欄上這樣做會很有用,這是很多重複的代碼。
的信息
相關問題
- 1. ActionListener最佳做法
- 2. 在BL和GUI之間共享對象的最佳做法
- 3. WCF和NoSql最佳做法
- 4. RabbitMQ - 最佳做法
- 5. 最佳做法response.getOutputStream
- 6. estimatedHeightForRowAtIndexPath最佳做法
- 7. 最佳做法applicationDidEnterBackground
- 8. 最佳做法UIScrollView
- 9. CLLocationManager最佳做法
- 10. dynamic_cast和多態性的最佳做法
- 11. Broadcasts,ContentProviders和ContentRecievers的最佳做法
- 12. JavaMail編程最佳或最佳做法
- 13. 類的最佳做法
- 14. Ember ArrayProxy的最佳做法
- 15. Rails的最佳做法
- 16. Sqlite的最佳做法Android
- 17. Rails的最佳做法
- 18. Admob Viewpager的最佳做法
- 19. Math.Pow的最佳做法
- 20. viewDidUnload中的最佳做法?
- 21. elasticsearch id的最佳做法
- 22. webservices的最佳做法
- 23. UIActivityViewController的最佳做法
- 24. infinity.js的最佳做法
- 25. ActionListener,執行Gui
- 26. GUI Panel ActionListener
- 27. Nginx和runit ....什麼是最佳做法
- 28. Google Apps和OAuth最佳做法
- 29. 回撥函數和最佳做法
- 30. Guice最佳做法和反模式
退房How to use Actions參見[這個問題](http://stackoverflow.com/q/12463345/1076463)。我想我的答案也適用於這種情況。使用'Action'而不是'ActionListener' – Robin