簡體   English   中英

Jtree擴展和選擇問題

[英]Jtree expansion and selection problem

我有兩個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();

該代碼對於某些節點似乎工作正常,但對於leftTree中的某些其他節點則無法工作。 問題是即使執行了以上代碼后,rightTree仍處於折疊狀態,而我看不到所選節點。

我已經嘗試在JTree中使用其他方法,例如setExpandsSelectedPaths(true),expandPath(new TreePath(node.getParent()))。 另外,嘗試在執行上述代碼后調用rightTree.repaint()或rightTree.validate()。 但是問題仍然存在。 但是rightTree.isExpanded(new TreePath(node.getParent()))重新運行為true;

我的樹深約7-8層。 請幫助我解決此問題,如果需要更多信息,請告訴我。

對我來說,這種方法是不正確的。 實際上,TreePath是從當前節點到最高父節點的節點序列。 換句話說,通過調用getParet()直到達到tull來創建來自節點的TreePath。 因此,如果從一棵樹中獲取一個節點並創建路徑,則該路徑是原始樹中的節點序列,而第二棵樹中的路徑則是徒勞的,因為目標樹模型中不存在該路徑中的某些節點。

您需要選擇節點並在第二棵樹中找到一個合適的節點。 猜測具有相同用戶對象的節點。 在目標樹中找到的節點(如果找到)的,創建TreePath並選擇/擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM