Java 不使用TreeModel刷新JTree(TreeNode)
在我的Java应用程序中,我已经获得了树状结构中的数据。因此,让每个代表“节点”的类实现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) {
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);