Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 同步JTable和JTree_Java_Swing - Fatal编程技术网

Java 同步JTable和JTree

Java 同步JTable和JTree,java,swing,Java,Swing,有没有办法让JTable和JTree共享同一个模型,这样基础模型中的任何更改都会立即反映在这两个组件中?我不确定这是否是您想要的,但是Sun提供了一个关于创建树表的分为两部分的教程,它本质上是一个JTable,在第一列中有一个JTree渲染器。 教程链接: 编辑: 关于树表(一个在第一列中维护树的表组件,它允许根据用户对树的修改隐藏和显示行)的主题,我发现了一个由NetBeans实现的名为Outline。它很容易使用。一个简单的例子用了不到30分钟的时间来模拟。代码可以在中找到 以下是树桌的图

有没有办法让JTable和JTree共享同一个模型,这样基础模型中的任何更改都会立即反映在这两个组件中?

我不确定这是否是您想要的,但是Sun提供了一个关于创建树表的分为两部分的教程,它本质上是一个JTable,在第一列中有一个JTree渲染器。 教程链接:

编辑:

关于树表(一个在第一列中维护树的表组件,它允许根据用户对树的修改隐藏和显示行)的主题,我发现了一个由NetBeans实现的名为
Outline
。它很容易使用。一个简单的例子用了不到30分钟的时间来模拟。代码可以在中找到

以下是树桌的图像:


接口不同,但是使用下面相同的数据结构来实现它们应该是完全可行的。

如果您有一个类型
Obj
,它可以表示为树和表,您可以创建一个
TableModel
和一个
TreeModel
来观察对
Obj
的更改并做出相应的响应,您可以让
Obj
同时实现
TableModel
TreeModel
(尽管我不喜欢业务对象实现GUI对象),或者,您可以创建一个类,该类同时实现
TableModel
TreeModel
,并知道何时发生对
Obj
的更改。

假设您希望树节点包含每条记录的属性和每条记录的一行表,基于记录列表创建TableModel和TreeModel接口应该不会太难。

本教程是否有帮助:

有人说过,最好的方法是创建某种数据结构(模型)来表示数据,然后让treemodel和tablemodel查看公共数据结构来提取数据。这样做将允许它们共享同一个模型,您只需在数据更改时触发正确的事件,以便两者都得到更新。

看一看——可以对JTable和JTree使用事件列表。我不熟悉JTree渲染,但GlazedList的JTable部分非常可靠。

您有计划将表的基于行的顺序映射到树的父子顺序吗?