簡體   English   中英

JTree有時不會擴展

[英]JTree sometimes not expanding

我有一個非常大的項目,我正在研究,圖形編輯器,我在使用swing組件時遇到了一些大問題。 然而,現在我有一個程序員最糟糕的噩夢,一個只在某些時候發生的錯誤。

如果我嘗試選擇JTree的元素,無論是在添加元素時,還是在圖表中選擇它們時選擇它們( JInternalFrame ),其中一些元素都不會被擴展。

我的結構是這樣的,我有一個工作區,包含包含圖表的項目和項目。 圖表包含我擁有的所有元素,例如圓圈,矩形等,在文件夾中(如果它們是圓圈,則將它們放在圓圈文件夾中......)。

另一件需要知道的是我通過JTree setSelectedPath/Paths方法選擇我的元素。

一些可能有助於理解我做什么和我嘗試過的事情:

  • 我確保我的節點知道如何獲得root權限。 getTreeModel.getPathToRoot返回好路徑)
  • 我嘗試直接添加樹木選擇模型和樹的路徑
  • 我已將樹expandsSelectedPaths設置為true
  • 當我手動展開樹(后來甚至擴展)時,選擇節點,直到我添加導致問題的新元素類型
  • 這種情況在切換5種類型的元素時會發生一次,並且當我添加其他類型的元素之后添加其他類型的元素時會發生一些奇怪的事情

我希望有人知道該怎么做,雖然我認為這是一個非常復雜的問題。 請問任何可能對您有幫助的事情。

好的,謝謝大家回答,但我找到了一個非常簡單的解決方法來解決這個問題。 由於某種原因,如果最后一個路徑組件是葉子,則擴展的東西沒有效果。

我所做的只是讓我的葉子節點isLeaf方法返回false ,並且我的所有問題都消失了。

  • 如果addWhatever()JTree觸發正確的TreeModelEventfireChildAdded()firePathChanged()fireChildrenLoaded()treeStructureChanged()

  • GUI的所有更改都將移動到BackGround Task(s) ,請查看SwingWorkerRunnable#Thread BackGround Task(s) (最清晰,最簡單的方法),但Runnable#Thread需要將所有輸出(Swing方法)包裝到invokeLater

暫無
暫無

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

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