Re: [問題] JTree 呈現 xml 的階層架構

看板java作者 (十年~)時間12年前 (2013/05/01 21:53), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《rudolf1238 (Yo)》之銘言: : 各位板友好,我想用JTree來呈現xml內的資料,還有一些關於xml的問題, : 想請教大家,謝謝。 : [略] : 2. 讀取入JTree時可以指定此節點是集合(資料夾)或個體(單點)嗎? : 例如使用者現在新增一個Department,但還沒指定Department下面有Emplyee : 用DefaultTreeModel.insertNodeInto新增個Department的節點會是個前面是 : 黑點的個體而非集合類型的資料夾型態(不知道這樣說會不會懂) : 想請問能把空集合的子節點在TreeNode上顯示為資料夾型態的樣式嗎? : 以上兩點疑問請教,謝謝大家。 這種可以設定 cell renderer 的複合物 component,所呈現的子項目的外觀 都是由 renderer 來決定怎麼呈現,所以你應該從客製 tree cell renderer 去下手,假如內建的 LookAndFeel 所提供的 tree cell renderer 表現不出 你要的效果。 一個 tree cell renderer 在決定如何呈現 tree node 的外觀時,通常會考量 tree node 的兩個屬性: 1. 是不是末端的節點/isLeaf()。 2. 可不可有子節點/getAllowsChildren() 比如說以 JTree 呈現檔案結構時,會故意讓檔案與檔案夾所代表的 node 在 getAllowsChildren() 不同(分別是 false/true),而 tree cell renderer 就據以 getAllowsChildren() 的值來決定該 node 要呈現哪種圖示(if any)。 tree cell renderer 當然也可以不管上述兩個 node 屬性,完全由 node 所 帶的 user object 來決定該怎麼呈現 node 外觀。同樣以檔案系統內容為例, tree node 都是帶著某個 java.awt.File object,cell renderer 就從 File object 的 isDirectory()/isFile() 來決定要怎麼畫出這個 node。 你要的效果是一定做得到,看你要不要去做而已。 假如你只想要使用內建的 LookAndFeel 所提供的 tree cell renderer,又不想 把自己的手弄太髒去客製 tree cell renderer,那我會建議你在建構 DefaultTreeModel 時,使用兩個參數的建構子,第二個參數(asksAllowsChildren) 給 true 值。 http://ppt.cc/6Xsc 我印象中這樣子內建的 tree cell renderer 就會 honor tree node 的 allowsChildren 屬性。 http://i.imgbox.com/abupPnec.png
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.172.248.120 ※ 編輯: sbrhsieh 來自: 1.172.248.120 (05/01 22:06)

05/02 10:14, , 1F
解釋得太清楚太厲害了,真的非常感謝sbrhsieh專家!!
05/02 10:14, 1F

05/02 10:16, , 2F
這就是我想呈現的結果,再次感謝您的幫忙!!
05/02 10:16, 2F

05/02 11:09, , 3F
其實就是沒有完全符合你的需求的東西~你得要自己客製
05/02 11:09, 3F

05/02 11:23, , 4F
唉... 就跟你說 tutorial 裡頭都講了,還非得翻成中文
05/02 11:23, 4F

05/02 11:23, , 5F
才算幫到你的忙... what the...
05/02 11:23, 5F

05/02 11:25, , 6F
樓上有同感~文件裡面都有寫~好好看一下API就可以了拉
05/02 11:25, 6F

05/02 14:49, , 7F
Sorry,P大也幫很多忙,我太白癡單看treenode api而已
05/02 14:49, 7F
文章代碼(AID): #1HWHvI-k (java)
文章代碼(AID): #1HWHvI-k (java)