2011-03-08 11 views
0

すべての子ノードと属性を次の形式で持つ単一ノードがあります。完全な内容を持つ単一のノード要素を使用してJTreeを表示します。

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)を使用します。ツリーの単一のロー内にこれらの詳細をすべて表示する、ツリー用の単一のrootelementを作成しています。

代わりに、ネストされた子ノードと属性値を持つ正しい階層にツリーを表示します。これを行うためのinbuiltメソッドはありますか?

これを行うための組み込みメソッドがない場合、このコードを書くにはどうすればよいですか?

PS:上記のノードの内容は動的であり、静的ではありません。あなたが好きな何かを始めることができます

答えて

1

: - あなたの正確なニーズに合わせてツリーをカスタマイズする方法の詳細についてはJTree Swing Tutorialをお読みください

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のは、洗練されたコンポーネントです。

+0

多くの多くのありがとう。コードが助けになりました。 –

関連する問題