首页>代码>java swing开发企业人事管理系统源代码下载>/企业人事管理系统/src/com/mwq/frame/common/DeptTreeDialog.java
package com.mwq.frame.common;

import java.awt.BorderLayout;
import java.util.Iterator;
import java.util.Set;

import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

import com.mwq.hibernate.Dao;
import com.mwq.hibernate.mapping.TbDept;

public class DeptTreeDialog extends JDialog {

	private JTree tree;

	private Dao dao;

	public DeptTreeDialog(final JTextField textField) {
		super();
		dao = Dao.getInstance();
		setModal(true);// 设置对话框阻止当前线程
		setUndecorated(true);// 设置对话框不提供标题栏
		setBounds(100, 100, 125, 175);

		final JScrollPane scrollPane = new JScrollPane();// 创建滚动面板
		getContentPane().add(scrollPane, BorderLayout.CENTER);

		TbDept company = (TbDept) dao.queryDeptById(1);
		DefaultMutableTreeNode root = new DefaultMutableTreeNode(company
				.getName());// 创建部门树的根节点

		Set depts = company.getTbDepts();
		for (Iterator deptIt = depts.iterator(); deptIt.hasNext();) {
			TbDept dept = (TbDept) deptIt.next();
			DefaultMutableTreeNode deptNode = new DefaultMutableTreeNode(dept
					.getName());// 创建部门树的二级子节点
			root.add(deptNode);
			Set sonDepts = dept.getTbDepts();
			for (Iterator sonDeptIt = sonDepts.iterator(); sonDeptIt.hasNext();) {
				TbDept sonDept = (TbDept) sonDeptIt.next();
				deptNode.add(new DefaultMutableTreeNode(sonDept.getName()));// 创建部门树的叶子节点
			}
		}

		DefaultTreeModel treeModel = new DefaultTreeModel(root); // 利用根节点对象创建树模型对象

		tree = new JTree(treeModel); // 利用树模型对象创建树对象
		DefaultTreeCellRenderer render = new DefaultTreeCellRenderer();
		render.setLeafIcon(new ImageIcon());// 设置叶子结点的图标
		render.setClosedIcon(new ImageIcon());// 设置结点折叠时的图标
		render.setOpenIcon(new ImageIcon());// 设置结点展开时的图标
		tree.setCellRenderer(render);
		tree.addTreeSelectionListener(new TreeSelectionListener() {// 捕获树节点被选中的事件
					public void valueChanged(TreeSelectionEvent e) {
						TreePath treePath = e.getPath();// 获得被选中树节点的路径
						DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath
								.getLastPathComponent();// 获得被选中树节点的对象
						if (node.getChildCount() == 0) {// 被选中的节点为叶子节点
							textField.setText(node.toString());// 将选中节点的名称显示到传入的文本框中
						} else {// 被选中的节点不是叶子节点
							JOptionPane.showMessageDialog(null, "请选择所在的具体部门",
									"错误提示", JOptionPane.ERROR_MESSAGE);
							return;
						}
						dispose();// 销毁部门树对话框
					}
				});
		scrollPane.setViewportView(tree); // 将部门树放到滚动面板中
		//
	}

}
最近下载更多
caomin  LV4 2023年5月19日
poipoiiop  LV8 2023年1月8日
赵佳倩  LV1 2022年10月19日
qinshizun  LV1 2022年8月22日
微信网友_6084258495877120  LV1 2022年8月11日
baoligeer  LV5 2022年6月2日
姜广坤  LV14 2022年5月20日
12koko  LV3 2022年4月19日
wanglinddad  LV55 2022年4月14日
刘先生-OL  LV13 2022年3月23日
最近浏览更多
KKKing0908 10月7日
暂无贡献等级
暂无贡献等级
ljiahao2024 9月5日
暂无贡献等级
255921158  LV5 7月17日
wangming32  LV1 7月15日
ZALZXB20030525 7月1日
暂无贡献等级
放鞭炮  LV1 6月29日
语文1235 6月18日
暂无贡献等级
xzw135246789  LV1 6月15日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友