重新加载模型和设置选择路径后,Java JTree会截断我的节点

时间:2014-11-18 13:13:30

标签: java swing listener jtree

我有一个JTree,其中的孩子是我的班级继承自DefaultMutableTreeNode的实例。

一开始,树有10个节点,有两个级别。然后我在我的班级中使用add()方法将子项添加到某些节点中。然后我重新加载我的树模型:

tree.setModel(root) // root is an instance of my class.

孩子们被添加,一切正常。但是当我想设置选择路径(使用tree.setSelectionPath(path)扩展添加的子项)时会出现问题。然后大多数节点被截断,好像它们太长了(我看到类似节点的省略号)。

如何解决这个问题。评论setSelectionPath(path)行并手动扩展节点后,一切正常。

1 个答案:

答案 0 :(得分:0)

OpenJDK 11遇到同样的问题后,以下修复程序对我有用:

tree.expandPath(somePath);
tree.invalidate();

关键是invalidate()告诉Swing必须再次布置组件。有关更多详细信息,请参见Difference between validate(), revalidate() and invalidate() in Swing GUI