?? 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); // 將部門樹放到滾動面板中
//
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -