java - Swing - 如何处理多个相互依赖的组件?

标签 java swing

这是一个更普遍的问题: 我在 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模式,如讨论的那样herethis outline . MVC取决于 observer pattern .不是让每个 View 都更新其他 View ,而是安排每个 View 将自己注册为数据模型的监听器。当模型发生变化时,每个 View 都会相应地更新自身。

关于java - Swing - 如何处理多个相互依赖的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5637031/

相关文章:

Java绘图程序

java - 在 Eclipse Oxygen 中更改 Project Explorer TreeView 字体大小

java - 使用java从文本中删除url

java - 用户选择要在Java中绘制的颜色和形状后尝试绘制矩形/椭圆形

java - 在Swing中模拟回车键(不使用Robot)

java - 如何使用 jtextfield 在 jcombo 框自动建议中接受小写和大写

java - 主事件循环可以中断代码执行吗?

2个类之间的Java Action 监听器

java - Android studio,如果按钮没有drawable

java - 如何从 Java 中选定的日期获取整周日期