[英]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.