这是一个更普遍的问题: 我在 swing 中有一个非常复杂的文件表(数据模型并不简单),当用户单击一个条目时,另外两个 View 组件需要更改 - 文件统计 View 和文件内容 View - 都在同一个屏幕。
一个选择是将所有这些组件类定义在同一个文件中,然后相互引用 - 但这会产生非常困惑的代码。
我能想到的另一个选择是将统计信息和内容组件传递给表对象,并让他使用它——但这会使表无法在其他任何地方重用。
我确定有更好的方法 - 您会推荐做什么?
选项 1:
class MyPanel extends JPanel{
private MyTable table;
private MyFileViewer fv;
private MyFileStats stats;
class MyTable {
addMouseListener({ ... fv.update(); stats.update(); })
}
class MyFileViewer{...}
class MyFileStats{...}
}
选项 2:
class MyTable {
MyTable(MyFileViewer fv, MyFileStats stats) { ...
addMouseListener({fv.update, stats.update ... }
}
}
最佳答案
选项 3:Model–View–Controller模式,如讨论的那样here在this outline . MVC取决于 observer pattern .不是让每个 View 都更新其他 View ,而是安排每个 View 将自己注册为数据模型的监听器。当模型发生变化时,每个 View 都会相应地更新自身。
关于java - Swing - 如何处理多个相互依赖的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5637031/