樹中特定的節點可以由 TreePath
(封裝節點及其所有祖先的對象)標識,或由其顯示行(其中顯示區域中的每一行都顯示一個節點)標識。展開 節點是一個非葉節點(由返回 false 的 TreeModel.isLeaf(node)
標識),當展開 其所有祖先時,該節點將顯示其子節點。折疊 節點是隱藏它們的節點。隱藏 節點是位於折疊祖先下面的節點。所有可查看 節點的父節點都是可以展開的,但是可以顯示它們,也可以不顯示它們。顯示 節點是可查看的並且位於可以看到它的顯示區域。
構造方法摘要 | |
---|---|
JTree() 返回帶有示例模型的 JTree 。 |
|
JTree(Hashtable<?,?> value) 返回從 Hashtable 創建的 JTree ,它不顯示根。 |
|
JTree(Object[] value) 返回 JTree ,指定數組的每個元素作為不被顯示的新根節點的子節點。 |
|
JTree(TreeModel newModel) 返回 JTree 的一個實例,它顯示根節點 - 使用指定的數據模型創建樹。 |
|
JTree(TreeNode root) 返回 JTree ,指定的 TreeNode 作為其根,它顯示根節點。 |
|
JTree(TreeNode root, boolean asksAllowsChildren) 返回 JTree ,指定的 TreeNode 作為其根,它用指定的方式顯示根節點,並確定節點是否為葉節點。 |
|
JTree(Vector<?> value) 返回 JTree ,指定 Vector 的每個元素作為不被顯示的新根節點的子節點。 |
public JTree(TreeNode root)
-
返回
JTree
,指定的TreeNode
作為其根,它顯示根節點。默認情況下,樹可以將葉節點定義為不帶子節點的任何節點。 - 下面用構造方法 public JTree ( TreeNode root)創建實例
import javax.swing.JFrame; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; public class TreeDemo { public static void main(String[] args) { // 創建沒有父節點和子節點、但允許有子節點的樹節點,並使用指定的用戶對象對它進行初始化。 // public DefaultMutableTreeNode(Object userObject) DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("軟件部"); node1.add(new DefaultMutableTreeNode(new User("小花"))); node1.add(new DefaultMutableTreeNode(new User("小虎"))); node1.add(new DefaultMutableTreeNode(new User("小龍"))); DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("銷售部"); node2.add(new DefaultMutableTreeNode(new User("小葉"))); node2.add(new DefaultMutableTreeNode(new User("小雯"))); node2.add(new DefaultMutableTreeNode(new User("小夏"))); DefaultMutableTreeNode top = new DefaultMutableTreeNode("職員管理"); top.add(new DefaultMutableTreeNode(new User("總經理"))); top.add(node1); top.add(node2); final JTree tree = new JTree(top); JFrame f = new JFrame("JTreeDemo"); f.add(tree); f.setSize(300, 300); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 添加選擇事件 tree.addTreeSelectionListener(new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent(); if (node == null) return; Object object = node.getUserObject(); if (node.isLeaf()) { User user = (User) object; System.out.println("你選擇了:" + user.toString()); } } }); } } class User { private String name; public User(String n) { name = n; } // 重點在toString,節點的顯示文本就是toString public String toString() { return name; } }