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

class UIPanel extends JPanel{ ... }

class MainPanel { Model m;
    //instantiates UIPanel }


这里的问题是,在UIPanel类中,我想添加一个ActionListener,它将使用Model来决定如何处理用户操作。不幸的是,我决定拆分这两个类,并且无法直接访问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

10-05 18:55