同步JTable和JTree

时间:2009-06-09 18:46:03

标签: java swing

JTable和JTree是否有办法共享相同的模型,以便底层模型中的任何更改都会立即反映在两个组件中?

7 个答案:

答案 0 :(得分:4)

我不确定这是否是您正在寻找的内容,但Sun有一个关于创建树表的两部分教程,它本质上是第一列中带有JTree渲染器的JTable。 教程链接: part 1 part 2

编辑:

关于TreeTable的主题,(一个在第一列中维护树的Table组件,它允许根据用户对Tree的修改隐藏和显示行)我找到了一个名为{NetBeans的实现{1}}。这是非常容易使用。一个简单的例子花了不到30分钟来模拟。代码可以在this answer

中找到

这是TreeTable的图片:

alt text http://img17.imageshack.us/img17/6643/picture1hz.png

答案 1 :(得分:2)

如果您的类型Obj可以同时表示为树和表格,则可以创建TableModelTreeModel来观察对{{1}的更改并且相应地做出响应,您可以使Obj同时实现ObjTableModel(尽管我不喜欢实现GUI对象的业务对象),或者您可以创建一个实现两者的类{ {1}}和TreeModel并知道TableModel的更改何时发生。

答案 2 :(得分:1)

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

看一下GlazedLists - 能够为JTable和JTree使用EventList。我不熟悉JTree渲染,但GlazedLists的JTable部分非常可靠。