使用具有不同根和节点类型的TreeTable

我有以下问题:

我希望有一个类似JTeeTable的表组件,除了根(下面的类)和树的节点不是同一类型。

例如,假设我有以下类:

public final class Entry { private int id; private String title; private String notes; private List subEntryList; /** @see SubEntry*/ } public final class SubEntry{ private int id; private String title; private String notes; } 

虽然这两个类看起来相似并且可能激发inheritance的情况, 但它们并不是那样相关的可以把它想象成一辆带有汽车零件清单的车或带有演员名单的电影。

两个星期以来,我一直试图想办法在视觉上呈现上述内容。 我想过使用JTreeTable组件,但是当子条目(节点??)与条目(leaf ??)属于同一类型时,我所有的例子都是交叉显示用法。

我的想法到目前为止:看到如果我使用表,列将共享相同的名称,我认为我应该使用表和另一个表作为TableCellRenderer,然后双击父行支持显示/隐藏。

我不知道如何向前迈进……

所以,如果您有任何想法我应该如何解决这个问题,请分享您的想法。

UPDATE

 //I finally managed to sort out the tree table model. //Below is the snippet of what I have done. private List root; public EntryTreeTableModel(List root) { this.root = root; } public int getChildCount(Object parent) { if (parent instanceof List){ return ((ArrayList) parent).size(); }else if (parent instanceof Entry){ return ((Entry)parent).getSubEntries().size(); } return 0; } public Object getChild(Object parent, int index) { if (parent instanceof List){ return ((ArrayList) parent).get(index); }else if (parent instanceof Entry){ return ((Entry)parent).getSubEntries().get(index); }else if (parent instanceof Entry){ return ((SubEntry)parent); // Hmmm, this feels wrong. Check later. } return "..."; // Just to indicate that something went wrong } 

其他方法遵循相同的方法

非常感谢所有分享他们想法的人。 另外感谢Trashgod ……

org.netbeans.swing.outline.Outline类似乎是一个很好的候选者,如本例所示 。 特别是, Outline使用javax.swing.tree.TreeModel ,它“接受任何类型的对象作为树节点”。 将模型与示例进行比较, Entry将对应于目录,而SubEntry将对应于其中包含的文件列表。 请参阅为相关示例创建数据模型