我有以下问题:
我想要一个类似 JTeeTable 的表组件,只不过树的根(下面的类)和节点不是同一类型。
例如,假设我有以下课程:
public final class Entry {
private int id;
private String title;
private String notes;
private List<SubEntry> subEntryList; /** @see SubEntry*/
}
public final class SubEntry{
private int id;
private String title;
private String notes;
}
尽管这两个类看起来很相似并且可能会激发继承的情况,他们没有那样的关系. 将其视为带有汽车零件列表的汽车或带有演员列表的电影。
两周以来,我一直在尝试想办法以视觉方式呈现上述内容。我想过使用 JTreeTable 组件,但是当子条目(节点??)与条目(叶??)具有相同类型时,我遇到的所有示例都是交叉显示用法。
到目前为止我的想法:看到如果我使用表格,列将共享相同的名称,我想我应该使用一个表格和另一个表格作为 TableCellRenderer,然后支持双击父行时显示/隐藏。
我不确定如何继续前进......
因此,如果您对我应该如何解决这个问题有任何想法,请分享您的想法。
UPDATE
//I finally managed to sort out the tree table model.
//Below is the snippet of what I have done.
private List<Entry> root;
public EntryTreeTableModel(List<Entry> root) {
this.root = root;
}
public int getChildCount(Object parent) {
if (parent instanceof List){
return ((ArrayList<Entry>) 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<Entry>) 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
}
其他方法遵循同样的方法
非常感谢所有分享的人
他们的想法。再次感谢
垃圾神...
班上org.netbeans.swing.outline.Outline http://bits.netbeans.org/dev/javadoc/org-netbeans-swing-outline/org/netbeans/swing/outline/Outline.html正如这所建议的,似乎是一个很好的候选人example http://java.dzone.com/news/taking-new-swing-tree-table-a-。尤其,Outline http://bits.netbeans.org/dev/javadoc/org-netbeans-swing-outline/org/netbeans/swing/outline/Outline.html uses javax.swing.tree.TreeModel http://download.oracle.com/javase/6/docs/api/javax/swing/tree/TreeModel.html,它“接受任何类型的对象作为树节点”。将您的模型与例子 http://java.dzone.com/news/taking-new-swing-tree-table-a-, Entry
将对应于一个目录,并且SubEntry
将对应于其中包含的文件列表。看创建数据模型 http://download.oracle.com/javase/tutorial/uiswing/components/tree.html#data一个相关的例子。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)