作者sbrhsieh (十年~)
看板java
标题Re: [问题] JTree 呈现 xml 的阶层架构
时间Wed May 1 21:53:19 2013
※ 引述《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)
1F:推 rudolf1238:解释得太清楚太厉害了,真的非常感谢sbrhsieh专家!! 05/02 10:14
2F:→ rudolf1238:这就是我想呈现的结果,再次感谢您的帮忙!! 05/02 10:16
3F:→ swpoker:其实就是没有完全符合你的需求的东西~你得要自己客制 05/02 11:09
4F:→ PsMonkey:唉... 就跟你说 tutorial 里头都讲了,还非得翻成中文 05/02 11:23
5F:→ PsMonkey:才算帮到你的忙... what the... 05/02 11:23
6F:→ swpoker:楼上有同感~文件里面都有写~好好看一下API就可以了拉 05/02 11:25
7F:→ rudolf1238:Sorry,P大也帮很多忙,我太白痴单看treenode api而已 05/02 14:49