gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:06 26 4
gpt4 key购买 nike

我有以下问题:

我想要一个类似 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;

}

虽然这两个类看起来很相似并且可能会引发继承案例,但它们并没有那种关系可以将其想象成带有汽车零件列表的汽车或带有 Actor 列表的电影。

两个星期以来,我一直在尝试想出一种方法来直观地呈现上述内容。我考虑过使用 JTreeTable 组件,但我提供的所有示例都是在子条目(节点??)与条目(叶??)属于同一类型时的交叉显示用法。

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

虽然我不确定如何前进......

因此,如果您对我应该如何处理这件事有任何想法,请分享您的想法。

更新

//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
}

其他方法同理

Many thanks to all those who shared their ideas. Another thank to Trashgod...

最佳答案

类(class)org.netbeans.swing.outline.Outline似乎是一个很好的候选人,正如这个 example 所建议的那样.特别是,Outline使用 javax.swing.tree.TreeModel ,它“接受任何类型的对象作为树节点”。将您的模型与 example's 进行比较, Entry 对应一个目录,SubEntry 对应其中包含的文件列表。参见 Creating a Data Model一个相关的例子。

关于java - 使用具有不同根和节点类型的 TreeTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5664041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com