Re: [問題] JTree 呈現 xml 的階層架構
※ 引述《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
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
05/02 11:23, 4F
→
05/02 11:23, , 5F
05/02 11:23, 5F
→
05/02 11:25, , 6F
05/02 11:25, 6F
→
05/02 14:49, , 7F
05/02 14:49, 7F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):