2014-09-28 121 views
0

我使用this教程制作JTree。 现在我想调用这个类并把它放在一个ScrollPane中。调用JTree并放入滚动条

但是当我使用这个

TreeMainMenu tree = new TreeMainMenu(); 
    JScrollPane MainMenu = new JScrollPane(tree); 

它只能得到默认的树。我需要了解如何从另一个类中调用组件来使用它们。

的JTree:

import javax.swing.JTree; 
import javax.swing.tree.DefaultMutableTreeNode; 
import javax.swing.tree.TreeSelectionModel; 

public class TreeMainMenu extends JTree { 


private DefaultMutableTreeNode top = new DefaultMutableTreeNode("TOP"); 


public TreeMainMenu() { 

    APNode(); 
    JTree tree = new JTree(top); 



tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); 
} 


private void APNode() { 
    DefaultMutableTreeNode category = null; 
    DefaultMutableTreeNode node1 = null; 
    DefaultMutableTreeNode node2 = null; 
    DefaultMutableTreeNode node3 = null; 

    category = new DefaultMutableTreeNode("top"); 
    top.add(category); 

    node1 = new DefaultMutableTreeNode(new Node("top-1")); 
    category.add(node1); 
    node2 = new DefaultMutableTreeNode(new Node("node1")); 
    node1.add(node2); 
    node2 = new DefaultMutableTreeNode(new Node("node2")); 
    node1.add(node2); 
    node2 = new DefaultMutableTreeNode(new Node("node3")); 
    node1.add(node2); 
    node2 = new DefaultMutableTreeNode(new Node("node4")); 
    node1.add(node2); 

} 

private class Node { 
    public String nodeName; 

    public Node(String node) { 
     nodeName = node; 
    } 

    public String toString() { 
     return nodeName; 
    } 

} 
} 

回答

0

TreeMainMenu类是已经JTree因此,你不必创建一个新的JTree tree = new JTree(top);

您必须藉由节点一个新的树,但TreeMainMenu实例具有默认的节点。所以,你可以使用TreeMainMenu extends JPanel,并添加你的树(即您在构造函数创建)到面板或你需要使用的TreeMainMenu实例作为JTree和你的构造可以有如下:

public TreeMainMenu() { 

    APNode(); 
    setModel(new DefaultTreeModel(top)); 
    getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); 
}