Java 不使用TreeModel刷新JTree(TreeNode)

Java 不使用TreeModel刷新JTree(TreeNode),java,swing,jtree,Java,Swing,Jtree,在我的Java应用程序中,我已经获得了树状结构中的数据。因此,让每个代表“节点”的类实现TreeNode接口是最简单的方法 public class GPXObject implements TreeNode { public Enumeration<TreeNode> children() {} public boolean getAllowsChildren() {} public TreeNode getChildAt(int childIndex) {

在我的Java应用程序中,我已经获得了树状结构中的数据。因此,让每个代表“节点”的类实现TreeNode接口是最简单的方法

public class GPXObject implements TreeNode {
    public Enumeration<TreeNode> children() {}
    public boolean getAllowsChildren() {}
    public TreeNode getChildAt(int childIndex) {}
    public int getChildCount() {}
    public int getIndex(TreeNode node) {}
    public boolean isLeaf() {}
}
现在,当通过外部数据源添加节点时,我找不到刷新树的方法,因为 -没有自定义树模型 -没有tree.getModel.reload()方法 -没有默认的可变树节点

我弄错了JTree(TreeNode)的用途了吗? 我必须实现自定义树模型吗


tnx

虽然这似乎是个坏主意,但您应该将UI/TreeModel与数据模型分开,这允许您独立管理数据模型。然后将其包装在TreeModel/TreeNode结构上。这样,当您更新数据模型时,当您可以使用更新
TreeModel
的状态时,您将生成某种通知。您还遇到了
JTree
中的一个漏洞,当节点与模型相关时,节点与模型分离,因此您可以在需要更新某些内容时从节点访问模型:P@MadProgrammer谢谢你的信息。看起来我必须扩展DefaultTreeModel才能使用reload()。在运行到
reload
之前,我会查看
insertNodeInto
节点更改
节点已插入
节点已删除
,这将生成更小的更改请求,效率更高
GPXObject gpxRoot = new GPXObject();
gpxRoot.add(....) // add child nodes & subtrees ....
JTree tree = new JTree(gpxRoot);