我正在寫一個Java樹,其中的樹節點可能需要很長時間才能計算的子節點(在這種情況下,它是一個文件系統,可能存在網絡超時,導致無法從附加驅動器獲取文件列表)。Java TreeNode:如何防止getChildCount執行昂貴的操作?
我發現這個問題是這樣的:
getChildCount()
前應用戶的要求開樹的特定分支被調用。我相信這樣做是爲了讓JTree
知道是否在節點旁邊顯示+圖標。從
getChildCount()
孩子的準確計數可能需要詢問的枚舉之前進行潛在的昂貴的操作如果我僞造的
getChildCount()
值,樹只爲多子節點分配空間兒童。 (如果我回到「1」,我只看到1名兒童上市,儘管有更多)
孩子的枚舉可能是昂貴和費時的,我處之泰然。但我不知道getChildCount()
需要知道確切的孩子數量。
任何方式我可以解決這個問題?
加:另一個問題是,如果其中一個節點代表軟盤驅動器(如何陳舊!),驅動器將在用戶請求其文件之前進行輪詢;如果驅動器中沒有磁盤,則會導致系統錯誤。
更新:不幸的是,實現TreeWillExpand
偵聽器不是解決方案。這可以允許您否決擴展,但顯示的節點數量仍受限於TreeNode.getChildCount()
返回的值。