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日
暂无贡献等级
微信网友_7180079327236096
9月23日
暂无贡献等级
ljiahao2024
9月5日
暂无贡献等级
255921158 LV5
7月17日
wangming32 LV1
7月15日
ZALZXB20030525
7月1日
暂无贡献等级
微信网友_5986558820093952 LV4
6月29日
放鞭炮 LV1
6月29日
语文1235
6月18日
暂无贡献等级
xzw135246789 LV1
6月15日