gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:46 25 4
gpt4 key购买 nike

这是一个更普遍的问题:我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com