JTree定位树节点并使节点可见

2019年1月9日20:50:36 评论 902 645字阅读2分9秒

JTree定位树节点并且使该节点可见原理是非常简单的。

首先,该节点是否存在父节点,如果存在父节点并且父节点未展开,那么展开父节点,如果存在且已经展开了父节点或者不存在,那么就什么都不做。

其次,调用JTree.scrollPathToVisible方法使目标节点可见。

最后,调用JTree.setSelectionPath方法选中目标节点。

具体见以下代码:

	public static void locateNode(final JTree jTree, final DefaultMutableTreeNode node) {
		if (node == null || node.getParent() == null || node.getRoot() == null) {
			return;
		}
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				// 获取新创建节点的 Path
				TreePath treePath = new TreePath(node.getPath());
				// 展开该节点的父节点
				if (!jTree.isExpanded(treePath.getParentPath())) {
					jTree.expandPath(treePath.getParentPath());
				}
				// 使新创建的节点可见
				jTree.scrollPathToVisible(treePath);
				// 选中新创建的节点
				jTree.setSelectionPath(treePath);
			}
		});
	}
编程十万个怎么办