Java JTree_6

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeWillExpandListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.TreePath;

public class JTree_6 extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7110119222281494418L;

	public JTree_6() {
		// TODO Auto-generated constructor stub
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("倾城爱家");
		DefaultMutableTreeNode nodeA = new DefaultMutableTreeNode("经理办公室");
		DefaultMutableTreeNode nodeB = new DefaultMutableTreeNode("人事部");
		DefaultMutableTreeNode nodeC = new DefaultMutableTreeNode("技术部");
		DefaultMutableTreeNode nodeD = new DefaultMutableTreeNode("服务部");
		DefaultMutableTreeNode nodeE = new DefaultMutableTreeNode("推广部");

		DefaultMutableTreeNode nodeCA = new DefaultMutableTreeNode("网络维护部");
		DefaultMutableTreeNode nodeCB = new DefaultMutableTreeNode("应用开发部");

		DefaultMutableTreeNode nodeDA = new DefaultMutableTreeNode("网络服务部");
		DefaultMutableTreeNode nodeDB = new DefaultMutableTreeNode("内勤开发部");

		root.add(nodeA);
		root.add(nodeB);
		root.add(nodeC);
		root.add(nodeD);
		root.add(nodeE);
		nodeC.add(nodeCA);
		nodeC.add(nodeCB);
		nodeD.add(nodeDA);
		nodeD.add(nodeDB);

		final DefaultTreeModel treeModel = new DefaultTreeModel(root);
		final JTree tree = new JTree(treeModel);

		Container container = getContentPane();
		container.add(tree, BorderLayout.CENTER);

		tree.addTreeWillExpandListener(new TreeWillExpandListener() {

			@Override
			public void treeWillCollapse(TreeExpansionEvent event)
					throws ExpandVetoException {
				// TODO Auto-generated method stub
				TreePath path = event.getPath();
				DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
						.getLastPathComponent();
				System.out.println("节点“" + node.getUserObject() + "”将被折叠!");
			}

			@Override
			public void treeWillExpand(TreeExpansionEvent event)
					throws ExpandVetoException {
				// TODO Auto-generated method stub
				TreePath path = event.getPath();
				DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
						.getLastPathComponent();

				System.out.println("节点“" + node.getUserObject() + "”将被展开!");
			}

		});

		tree.addTreeExpansionListener(new TreeExpansionListener() {

			@Override
			public void treeCollapsed(TreeExpansionEvent event) {
				// TODO Auto-generated method stub
				TreePath path = event.getPath();
				DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
						.getLastPathComponent();
				System.out.println("节点“" + node.getUserObject() + "”已经被折叠!");
				System.out.println();
			}

			@Override
			public void treeExpanded(TreeExpansionEvent event) {
				// TODO Auto-generated method stub
				TreePath path = event.getPath();
				DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
						.getLastPathComponent();
				if ((node.getUserObject()).equals("技术部")) {
					System.out.println("您没有权限查看该节点包含的子节点");
					tree.collapsePath(path); // 内部类中引用的变量必须为final
				} else {
					System.out.println("节点“" + node.getUserObject() + "”已经被展开!");
					System.out.println();
				}

			}

		});
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JTree_6 instance = new JTree_6();
		instance.setTitle("处理展开节点事件");
		instance.setVisible(true);
		instance.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		instance.pack();
	}

}


posted on 2012-05-22 04:18  java课程设计例子  阅读(163)  评论(0编辑  收藏  举报