我有一个节点,它具有以下格式的所有子节点和属性。
node = Root[
attributes = {rootattribute1, rootattribute2,...},
value = [100,
childNode1
[
attributes = {childNode2att1,.....}
value = [1001]
]
childNode2
[
attributes = {childNode2attributes,.....}
value = [1001]
] ......... and some other childnodes like this
]
当我使用Jtree tree = new Jtree(node)时;它只为树创建一个单独的元素,在树的一行中显示所有这些细节。
相反,我希望使用嵌套的子节点和atrribute值在正确的层次结构中显示树。有没有内置的方法来做到这一点?
如果没有内置方法来执行此操作,我该如何为此编写代码?
PS:上面显示的节点内容是动态的,不是静态的。
答案 0 :(得分:1)
您可以从以下内容开始:
import javax.swing.*
import javax.swing.tree.*
class Root {
def attributes = []
def children = []
def value = 0
def String toString() {
"[${value}] attributes: ${attributes} children: ${children}"
}
}
def createTreeNode(node) {
def top = new DefaultMutableTreeNode(node.value)
for (attr in node.attributes) {
top.add(new DefaultMutableTreeNode(attr))
}
for (child in node.children) {
top.add(createTreeNode(child))
}
top
}
root = new Root(
attributes: ['rootattribute1', 'rootattribute2'],
value: 100,
children: [
new Root(
attributes: ['childNode2att1'],
value: 1001),
new Root(
attributes: ['childNode2attributes'],
value: 1002),
])
frame = new JFrame('Tree Test')
frame.setSize(300, 300)
frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
jtree = new JTree(createTreeNode(root))
frame.add(jtree)
frame.show()
JTree是一个复杂的组件 - 请阅读JTree Swing Tutorial,了解有关如何根据您的具体需求自定义树的更多详细信息。