2011-02-17 39 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

来自数据库的列表元素是什么? – 2011-02-17 12:51:30

+0

均表示不同的DS。 “转换”是什么意思,是不是取决于你的应用规范? – 2011-02-17 12:51:59

回答

0

假设你正确地从数据库中获取节点名称和节点是平的(没有等级),您可以创建一个树,这个代码

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)。如果您有一个有效的根节点,则可以使用它并删除隐藏根的行。

相关问题