[英]Java ActionListener in another Class
我正在嘗試使用Java Swing庫構建一個小型記事本應用程序。 我有一個主要函數,它調用JFrame (NotepadClass)
的構造函數。 在這個NotepadClass
我有一個MenuDesigner
類,如下所示:
this.setJMenuBar(new MenuDesigner());
MenuDesigner
類擴展了JMenuBar
,后者調用在另一個類中編寫的actionListener( MenuActionListener
)。 現在我的問題是:如果我單擊“新建” menuItem
,則NotepadClass
的標題應該更改。 如何訪問兩個級別的課程?
我應該使用哪種Java概念來完成此任務?
使用Swing Action代替ActionListener ,此API專為您而設計
發布SSCCE演示了您的問題,關於JFrame和JMenuBar,JMenu以及一個,兩個JMenuItem(s) ,請注意其他
沒有看到您的代碼很難給出明確的答案,但是編寫單獨的類來構建菜單的原因之一是您可以將實例傳遞給該類。
this.setJMenuBar(new MenuDesigner(notepadClass));
這就是為什么在構建GUI時最好擁有一個或多個模型類的原因之一。
您可以將最高級別的模型類的實例傳遞給所有GUI組件,每個組件都可以獲取或設置它們代表的模型類的各個部分。
您可以在構造函數中傳遞NotepadClass並提供更改標題的方法。
另一種選擇是在NotepadClass內部構建ActionListener或讓NotepadClass本身實現Actionlistener接口,以便您可以訪問變量或方法。
為什么您的actionListener用於另一個類的菜單?
您可以創建一個implements ActionListener
的新類,在其中可以添加自己的邏輯。 這樣,您可以在另一個文件中重用它。
另外,您可能應該通過將MenuDesigner
類移動到其自己的文件中來MenuDesigner
其耦合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.