Отображение JTree с использованием одного элемента узла, имеющего полное содержимое - PullRequest
0 голосов
/ 08 марта 2011

У меня есть один узел, который имеет все дочерние узлы и атрибуты в следующем формате.

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);Он создает только один корневой элемент для дерева, показывающий все эти детали в одной строке дерева.

Вместо этого я хочу отобразить дерево в правильной иерархии с вложенными дочерними узлами и значениями атрибутов.Есть ли какой-либо встроенный метод для этого?

Если нет встроенного метода для этого, как мне написать код для этого?

PS: содержимое узла, отображаемое выше, является динамическим и не статичным.

1 Ответ

1 голос
/ 09 марта 2011

Вы можете начать с чего-то вроде:

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 для получения более подробной информации о том, как настроить дерево для ваших конкретных потребностей.

...