JTable和JTree是否有办法共享相同的模型,以便底层模型中的任何更改都会立即反映在两个组件中?
答案 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
可以同时表示为树和表格,则可以创建TableModel
和TreeModel
来观察对{{1}的更改并且相应地做出响应,您可以使Obj
同时实现Obj
和TableModel
(尽管我不喜欢实现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部分非常可靠。