我正在尝试使用Java Swing库构建一个小的记事本应用程序。我有一个main函数调用JFrame (NotepadClass)
的构造函数。在这个NotepadClass
中,我有一个MenuDesigner
类,如下所示:
this.setJMenuBar(new MenuDesigner());
MenuDesigner
类扩展JMenuBar
,它调用在另一个类中编写的actionListener(MenuActionListener
)。
现在我的问题是:如果我点击“新”menuItem
,NotepadClass
中的标题应该会更改。如何访问两级的课程?
我应该使用哪种Java概念来实现这一目标?
答案 0 :(得分:2)
使用Swing Action代替ActionListener,此API专为您的目的而设计
发布SSCCE发布了您的问题,仅JFrame与JMenuBar, JMenu and one, two JMenuItem(s),并注明
答案 1 :(得分:1)
如果没有看到您的代码,很难给出明确的答案,但编写单独的类来构建菜单的原因之一是您可以将实例传递给类。
this.setJMenuBar(new MenuDesigner(notepadClass));
这就是为什么在构建GUI时拥有一个或多个模型类的好处之一。
您可以将最高级别模型类的实例传递给所有GUI组件,每个组件都可以获取或设置它们所代表的模型类的部分。
答案 2 :(得分:0)
您可以在构造函数中传递NotepadClass并提供更改标题的方法。
另一种选择是在NotepadClass中构建ActionListener,或者让NotepadClass本身实现Actionlistener接口,以便您可以访问变量或方法。
答案 3 :(得分:0)
为什么你的actionListener适用于另一个类的菜单?
您可以create a new class that implements ActionListener
添加自己的逻辑。这样您就可以在另一个文件中重复使用它。
此外,您应该通过将MenuDesigner
类移到自己的文件中来解除它。