Java Swing - 如何分离 UI 组件

标签 java swing user-interface

我有两个 UI 组件,如下所示:

class UIPanel extends JPanel{ ... }

class MainPanel { Model m;
    //instantiates UIPanel }

这里的问题是,在 UIPanel 类中,我想添加一个 ActionListener,它将使用 Model 来决定如何处理用户操作。不幸的是,我决定拆分这两个类,并且我无法直接访问模型。一个明显的解决方案是简单地将 UIPanel 类粘贴到 MainPanel 中,但我在想是否有办法保持分割。

最佳答案

您可以简单地为 UIPanel 提供对 Model 的引用:

class UIPanel {
    UIPanel(Model m) {
         m.addActionListener(listener);
    }
}

class MainPanel {
    ...
    MainPanel() {
        ...
        UIPanel uiPanel = new UIPanel(m); // Constructor, a separate setter would be possible also
        ...
     }
}

这显然是一个相当紧密的耦合。也许MainPanel根本不需要对Model的引用?

关于Java Swing - 如何分离 UI 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11843397/

相关文章:

java - 如何使用 Moshi 解析未知 key json

java - 自动缩写 JLabel

user-interface - 为什么输入密码2次?

java - 如何在具有另一个组件的拆分 Pane 上添加按钮

user-interface - UI 自动化跨平台(Windows 和 Mac OS X)开源 API/框架?

java - 如果命令行中没有任何内容,如何打印错误?

java - Jersey 2.18 + GAE 引发 NoClassDefFoundError

java - 我怎样才能在java中做出暂停选项

java - 我如何知道 JFrame 何时处于最大化状态 Java Swing

java - JComboBox ActionEvent 与多个组合框一起执行?