我正在寻找一种方法来在实际选择的节点之前选择TreeNode(如果没有选择节点,则应该选择根之后的第一个节点)。我基本上有一个Hashtable ht和一个充满节点的JTree(所有节点允许孩子)。 一旦我点击一个节点,我想在该对象的Hashtable中查找,系统应该写出类似"你选择了' Object.name'"。然后,用户应该能够单击JButton并在单击的节点之前选择节点。当然,也应该有一行更新的' Object.name'。也许甚至有办法更新树的GUI,以便其他TreeNode显示为选中。
我一直在尝试使用selectionModel和TreeNodes的treePath-Methods(例如将它们保存在Lists中并尝试选择Element之前),但似乎没有任何效果。我也没有在Google或StackOverflow上找到任何有用的东西。我以为它可能会以某种方式使用DefaultMutableTreeNode中的getPreviousSibling-Method?
我尝试的最后一件事:
DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode();
treeNode = (DefaultMutableTreeNode) getLastSelectedPathComponent();
setSelectionPath(new TreePath(((DefaultTreeModel) treeModel).getPathToRoot(treeNode.getPreviousSibling())));
不幸的是我不断收到NullPointerException:
这个片段的第2行中的(虽然我之前选择了另一个TreeNode,之前有兄弟姐妹)。
任何人都可以告诉我我做错了什么或告诉我其他方法可能有用吗? :D如果您需要更多信息,请不要问我。