同步JTable和JTree

4

有没有一种方法让 JTable 和 JTree 共用同一个模型,这样底层模型的任何更改都会立即反映在这两个组件中?


你有没有计划将表的基于行的顺序映射到树的父子顺序? - basszero
7个回答

4
我不确定这是否是您要寻找的,但Sun公司有一份关于创建树形表格的教程,这本质上是一个带有JTree渲染器的JTable,位于第一列。 教程链接: part 1 part 2 编辑:
关于TreeTable(在其第一列中维护树形结构的表格组件,允许根据用户对树的修改来隐藏和显示行),我发现了NetBeans的实现,称为Outline。它非常容易使用。一个简单的示例只需要不到30分钟即可完成。代码可以在此答案中找到。
下面是TreeTable的图像: alt text http://img17.imageshack.us/img17/6643/picture1hz.png

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


0

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


0

假设您想要包含每个记录属性的树节点和每个记录的一个表行,那么基于记录列表创建TableModel和TreeModel接口的适配器应该不难。


0
已经有人提出,最好的方法是创建某种数据结构(模型)来表示您的数据,然后让树形模型和表格模型查找共同的数据结构以获取数据。这样做将允许它们共享相同的模型,您只需要在数据更改时触发正确的事件,以便两者都得到更新。

0

看一下GlazedLists--有一种使用EventList来同时为JTable和JTree提供支持的能力。我不太熟悉JTree的渲染,但是GlazedLists的JTable部分非常可靠。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接