2015-12-01 36 views
0

我有一個簡單的JTree。
我通過setSelectionPath()在代碼中設置了它的選定節點。Mark treeNode as selected(Swing)

一切工作正常,但我想要的是,相應的節點(我的路徑的結束)突出顯示,如果用戶用鼠標點擊它,以便在樹本身也有一個視覺反饋以指示選擇哪個節點。

問候烏鴉

編輯:
如何我希望它看起來(就像用鼠標 Properly highlighted (after selection with mouse)

它目前看起來如何通過程序選擇節點後,選擇一個節點時看起來 Current result after selecting node via program

+0

你使用:myTree.setSelectionPath(new TreePath(treeModel.getPathToRoot(treeNode)))? –

+0

是的,我嘗試過,但它沒有從我目前的做法有任何區別... – Raven

+0

考慮提供一個[可運行示例](https://stackoverflow.com/help/mcve),它演示你的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這將導致更少的混淆和更好的反應 – MadProgrammer

回答

0

,我發現我的問題:
選擇在樹位於窗格當我刷新我的樹的內容。
但不是隻更新它的節點,我重新創建了完整的模型,這就是問題所在。
我使用的路徑是舊模型的路徑,這就是在新樹中無法正確選擇路徑的原因。 我切換到更新模型的方法,現在setSelectionPath()具有我想要的效果。

1

聚焦並展開所選節點:

  1. jtree.setScrollsOnExpand(true)

    確定 樹是否可以滾動顯示以前隱藏的子節點。
    如果此屬性爲true(默認值), 節點展開樹時可以使用滾動使 節點的後代的最大可能數目可見。

  2. jtree.setExpandsSelectedPaths(true)
    允許配置JTree的自動擴展選擇的路徑。
    如果你想手動管理這一點,
    可以使用jtree.setExpandedState(TreePath path, boolean state)方法

+0

謝謝,但這不是我正在尋找的效果...我會更新我的答案,讓自己更清楚 – Raven

+0

@Raven在應用setSelectionPath()後,getSelectionRows()會返回什麼? –

+0

它返回null – Raven