2009-09-02 70 views
0

我有一個5級深度0,1,2,3,4級的JTree。我對1級的信息,價值或指數感興趣。當選擇低於1級時,是否可以立即獲得1級信息?JTree選擇

+0

嗯......你是否試圖找到所選項目上面的第1級節點*? – 2009-09-02 02:06:38

+0

也許我把它描述錯了。我認爲0級是根,4級是葉。我需要的是如果用戶的選擇是在2級,3級或4級,我想立即得到相應的1級的信息。 – 5YrsLaterDBA 2009-09-02 02:45:07

回答

0

如果您的1級節點是靜態的,您可以在樹類中保留對它們的引用。這會給你一個訪問這些節點的直接方式,假設你已經使用了派生類的信息,那麼你就可以得到派生類的信息。

還有DefaultTreeModel.getChild(...),它可以讓你通過它的索引獲得節點在根節點下。

如果您試圖將樹「上移」到1級節點,則可以在樹模型上嘗試getPathToRoot。級別1節點(就在根目錄下)將是結果[1]。

+0

@ user131273您絕對不應該保留對樹節點的靜態引用。如果使用'DefaultMutableTreeNode'或類似的實現,其中節點具有對子節點的引用,那麼所有的樹實例將在相同的節點上運行,並且最終將來自樹A的節點與樹B中的節點混合。僅供參考。 – 2010-11-17 00:15:57

+0

@煞車是的,那是真的。我的意思是靜態的,意思是「不會改變」的英文單詞,而不是「跨所有實例共享」的Java語言意義。對我來說糟糕的詞選擇! :-) – 2010-12-06 00:38:15

0

如果有興趣在所選擇的電平1的節點使用該方法

JTree.getSelectionPath()

獲取所選的TreePath然後檢查的TreePath返回具有至少2個元素(第一個是根,第二所選擇的電平1節點)與

TreePath.getPathCount()

如果返回> = 2,然後使用

TreePath.getPathComponent(1)

獲取選定的1級節點。 (0索引是根)