【问题标题】:Java ActionListener in another Class另一个类中的 Java ActionListener
【发布时间】:2012-12-31 17:16:14
【问题描述】:

我正在尝试使用 Java Swing 库构建一个小型记事本应用程序。我有一个调用JFrame (NotepadClass) 的构造函数的主函数。在这个NotepadClass 我有一个类似这样的MenuDesigner 类:

this.setJMenuBar(new MenuDesigner());

MenuDesigner 类扩展了 JMenuBar,它调用了另一个类中编写的 actionListener (MenuActionListener)。 现在我的问题是:如果我点击“新”menuItemNotepadClass 中的标题应该会改变。我如何访问一个两级以上的课程?

我应该使用哪种 Java 概念来实现这一点?

【问题讨论】:

    标签: java swing class actionlistener jmenu


    【解决方案1】:

    【讨论】:

    • +1 表示Action。还要考虑here 概述的方法。
    【解决方案2】:

    如果没有看到您的代码,很难给出明确的答案,但编写一个单独的类来构建菜单的原因之一是您可以将实例传递给该类。

    this.setJMenuBar(new MenuDesigner(notepadClass));
    

    这就是为什么在构建 GUI 时最好有一个或多个模型类的原因之一。

    您可以将最高级别模型类的实例传递给您的所有 GUI 组件,并且每个组件都可以获取或设置它们所代表的模型类的部分。

    【讨论】:

      【解决方案3】:

      您可以在构造函数中传递 NotepadClass 并提供更改标题的方法。

      另一种选择是在 NotepadClass 中构建 ActionListener 或让 NotepadClass 自己实现 Actionlistener 接口,以便您可以访问变量或方法。

      【讨论】:

        【解决方案4】:

        为什么你的菜单的 actionListener 在另一个类中?

        您可以create a new class that implements ActionListener 在其中添加您自己的逻辑。这样您就可以在另一个文件中重复使用它。

        此外,您可能应该通过将 MenuDesigner 类移到自己的文件中来解耦它。

        【讨论】:

          猜你喜欢
          • 2015-10-30
          • 2019-05-31
          • 1970-01-01
          • 1970-01-01
          • 2013-12-17
          • 2014-12-21
          • 1970-01-01
          • 1970-01-01
          • 2013-10-06
          相关资源
          最近更新 更多