У меня есть два экземпляра JTrees (leftTree и rightTree).Пользователь может выбрать несколько узлов из левого дерева и добавить их в правое дерево.У меня есть приведенный ниже код в слушателе действия кнопки добавления, чтобы развернуть и выбрать узел в rightTree после добавления узла.
rightTree.updateUI();
TreePath[] paths = leftTree.getSelectionPaths();
if (null != paths && paths.length > 0)
{
TreePath path = paths[0];
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
rightTree.scrollPathToVisible(new TreePath(node.getPath()));
rightTree.setSelectionPaths(paths);
}
leftTree.clearSelection();
Этот код работает нормально для некоторых узлов, но не может работать для другихузлы в левом дереве.Проблема в том, что даже после выполнения приведенного выше кода rightTree находится в свернутом состоянии, и я не вижу выбранный узел.
Я пытался использовать другие методы в JTree, такие как setExpandsSelectedPaths (true), expandPath (new TreePath (node.getParent ())).Также попытался вызвать rightTree.repaint () или rightTree.validate () после выполнения вышеуказанного кода.Но проблема все еще существует.Но rightTree.isExpanded (new TreePath (node.getParent ())) возвращает значение true;
Мое дерево имеет глубину около 7-8 уровней.Пожалуйста, помогите мне решить эту проблему и дайте мне знать, если вам нужна дополнительная информация.