【Swing入門教程】一步一步做Netbeans(4):JTree的使用及定製TreeCellRenderer

      下一步我們要做什麼呢,其實我是想早點睡覺;我一直有個願望,希望能在12點之前睡覺,每次都被我硬生生的拖到12點以後,我一直認爲12點之前睡覺是浪費時間,會有一種負罪感。那都是學生時代養成的習慣,那時晚睡沒關係,第二天可以補回來。然而,工作了覺是補不回來的。

      JTree是Swing裏一個很重要的組件,要詳細講的話起碼要N個教程。我這就偷工減料,況且我對JTree的理解也只是入門階段,還是不誤人子弟的好。接下來我們要實現Netbeans中項目的文件樹列表,這個非JTree莫選了。按慣例,先看下效果:

文件樹效果

      有幾點做的不好:

      1:根節點還在。或許你說用setRootVisible(false)不就行了。這樣雖然根節點看不見了,但是下面主節點前的小加號都沒了,這個暫時還不知道怎麼解決,希望各位給點意見。

      2:順序有點亂,和Netbeans中的順序不一樣。我是採用JTree的默認排序,它是按字母排序的;而Netbeans的規律是文件夾在前,文件在後。

      3:節點的圖標和文件名的距離過近。這個就是圖標的問題了,Netbeans圖標的右邊肯定留了一些空白,他有兩套圖標,另一套是給有版本控制用的(右邊多了個小標誌)。

      廢話不多說了,上代碼;先在"文件"面板上放入JTree,通過initTree()來初始化:

      initTree()中重要的是如何通過文件夾來初始化JTree的節點,裏面用到的一個遞歸函數;在學校時遞歸函數沒理解好,還在裏面繞了一小會:

     這樣一顆文件樹就構造好了,只是樹節點的圖標都是JTree默認的圖標,和Netbeans的不一樣。於是不得不爲JTree定製渲染器了,至少把圖標改一下嘛:

   

       需要爲JTree指定TreeCellRenderer,initTree()中的188行加入:

搞定收工。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章