Java Swing 樹狀組件JTree的使用方法

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

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章