2011-02-17 3 views
1

목록을 DefaultMutableTreeNode로 변환하는 방법?목록 <String>을 DefaultMutableTreeNode로 변환하는 방법?

데이터베이스의 데이터를 목록에서 가져옵니다. 이제 그 목록을 JTree로 변환하려고합니다. 내가 어떻게 해?

public class ExpressionTree extends JFrame implements ActionListener { 

private JComboBox group;  
private JLabel groupLabel; 
Container content; 
JTree tree; 
DefaultMutableTreeNode root, child; 

public static void main(String[] args) { 
    new ExpressionTree(); 
} 


public ExpressionTree() { 

    super("Creating a Simple JTree"); 
    WindowUtilities.setNativeLookAndFeel(); 
    addWindowListener(new ExitListener()); 
    content = getContentPane(); 

    group = new JComboBox(); 
    groupLabel = new JLabel("GROUP"); 

    ExpressionBuilder expressionBuilder = new ExpressionBuilder(); 
    Set<Integer> set = expressionBuilder.getGroup().keySet(); 
    Iterator<Integer> iterator = set.iterator(); 
    group.addItem("select"); 
    while(iterator.hasNext()){ 
     group.addItem(expressionBuilder.getGroup().get(iterator.next()));  
    } 


    content.add(groupLabel); 
    content.add(group); 
    group.addActionListener(this); 
    content.setLayout(new FlowLayout()); 
    root= new DefaultMutableTreeNode("root"); 
    tree = new JTree(root); 
    content.add(new JScrollPane(tree), BorderLayout.CENTER); 
    setSize(300, 475); 
    setVisible(true); 

} 
public String groupString = null; 
public int groupId; 

public void actionPerformed(ActionEvent e){ 

    groupString = group.getSelectedItem().toString(); 
    ExpressionBuilder builder=new ExpressionBuilder(); 
    builder.getGroupId(groupString); 
    //tree.setModel(new NodeTree());.........//what to write over here 
    //root.add(new NodeTree()); 
} 
} 


public class NodeTree extends DefaultMutableTreeNode{ 

    private JTree tree; 
    DefaultMutableTreeNode top; 
    public NodeTree(){ 
      ExpressionTree expressionTree= new ExpressionTree(); 
      String groupstring = expressionTree.groupString; 
      int groupId = expressionTree.groupId; 
      top = new DefaultMutableTreeNode(groupstring); 
      tree = new JTree(top); 
      tree.setEditable(true); 
      JScrollPane treeView = new JScrollPane(tree); 
      createNode(top,groupId); 

    } 

    public void createNode(DefaultMutableTreeNode top,int group){ 
     DefaultMutableTreeNode expression[] = null; 
     ExpressionBuilder builder=new ExpressionBuilder(); 
     Object object = (Object)builder.getExpression(group,0); 
     expression[1] = new DefaultMutableTreeNode(object); 
     top.add(expression[1]); 
     expression[1].add(new DefaultMutableTreeNode((Object)builder.getExpression(group,1))); 

    } 

} 
+0

DB에서 오는 목록의 요소는 무엇입니까? –

+0

은 둘 다 다른 DS를 나타냅니다. 'convert'로 무엇을 의미합니까 ??, 당신의 앱 사양에 의존하지 않습니까? –

+0

질문에 소스 코드를 추가하십시오 (** 편집 ** 링크가 있음). 여기서는 읽을 수 없습니다. –

답변

0

당신이 데이터베이스에서 제대로 노드 이름을 가져 오는하고 노드 (NO 계층 구조) 평면 있다고 가정하면,이 코드

private JTree createTree(List<String> nodeNames) { 

    DefaultMutableTreeNode root = new DefaultMutableTreeNode(new Object()); 
    TreeModel model = new DefaultTreeModel(root); 
    for (int i = 0; i < nodeNames.size(); i++) { 
     root.add(new DefaultMutableTreeNode(nodeNames.get(i))); 
    } 
    JTree tree = new JTree(model); 
    tree.setRootVisible(false); 
    return tree; 
    } 

주 트리를 만들 수 있습니다 : 나는대로 더미 노드를 생성 루트 및 사용 setRootVisible(false). 유효한 루트 노드가 있으면이를 사용할 수 있고 루트를 숨기는 행을 제거 할 수 있습니다.

+0

감사합니다 보스 덕분에 많이 ... :) –

관련 문제