樹中特定的節點可以由 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;
}
}
