?? deptandpersonnelpanel.java
字號:
package com.mwq.frame.common;
import java.awt.BorderLayout;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.DefaultTableModel;
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.HibernateSessionFactory;
import com.mwq.hibernate.mapping.TbDept;
import com.mwq.hibernate.mapping.TbDutyInfo;
import com.mwq.hibernate.mapping.TbRecord;
public class DeptAndPersonnelPanel extends JPanel {
private JTable table;
private Vector<String> tableColumnV;
private Vector<Vector<String>> tableValueV;
private DefaultTableModel tableModel;
private JTree tree;
private Dao dao = Dao.getInstance();
public DeptAndPersonnelPanel() {
super();
setLayout(new BorderLayout());
final JSplitPane splitPane = new JSplitPane();
splitPane.setDividerLocation(140);
add(splitPane);
final JScrollPane deptScrollPane = new JScrollPane();
splitPane.setLeftComponent(deptScrollPane);
// 初始化左側的部門樹
DefaultMutableTreeNode root = new DefaultMutableTreeNode("全部職員");
TbDept company = (TbDept) dao.queryDeptById(1);
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);
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
TreePath path = e.getPath(); // 獲得被選中樹節點的路徑
tableValueV.removeAllElements();// 移除表格中的所有行
if (path.getPathCount() == 1) {// 選中樹的根節點
showAllRecord();// 顯示所有檔案
} else {// 選中樹的子節點
String deptName = path.getLastPathComponent().toString();// 獲得選中部門的名稱
TbDept selectDept = (TbDept) dao.queryDeptByName(deptName);// 檢索指定部門對象
Iterator sonDeptIt = selectDept.getTbDepts().iterator();
if (sonDeptIt.hasNext()) {// 選中樹的二級節點
while (sonDeptIt.hasNext()) {
showRecordInDept((TbDept) sonDeptIt.next());// 顯示選中部門所有子部門的檔案
}
} else {// 選中樹的葉子節點
showRecordInDept(selectDept);// 顯示選中部門的檔案
}
}
tableModel.setDataVector(tableValueV, tableColumnV);
HibernateSessionFactory.closeSession();
}
});
DefaultTreeCellRenderer render = new DefaultTreeCellRenderer();
render.setLeafIcon(new ImageIcon());// 設置葉子結點的圖標
render.setClosedIcon(new ImageIcon());// 設置結點折疊時的圖標
render.setOpenIcon(new ImageIcon());// 設置結點展開時的圖標
tree.setCellRenderer(render);
deptScrollPane.setViewportView(tree);
final JScrollPane personnalScrollPane = new JScrollPane();
splitPane.setRightComponent(personnalScrollPane);
tableColumnV = new Vector<String>();// 創建表格列名向量
String tableColumns[] = new String[] { "序 號", "檔案編號", "姓 名",
"性 別", "部 門", "職 務" };
for (int i = 0; i < tableColumns.length; i++) {// 添加表格列名
tableColumnV.add(tableColumns[i]);
}
tableValueV = new Vector<Vector<String>>();// 創建表格值向量
showAllRecord();
HibernateSessionFactory.closeSession();
tableModel = new DefaultTableModel(tableValueV, tableColumnV);// 創建表格模型對象
table = new JTable(tableModel);// 創建表格對象
personnalScrollPane.setViewportView(table);
}
private void showAllRecord() {
Iterator recordIt = dao.queryRecord().iterator();
int sequenceNumber = 1;
while (recordIt.hasNext()) {
TbRecord record = (TbRecord) recordIt.next();
Vector personnelV = new Vector<String>();
personnelV.add(sequenceNumber++);
personnelV.add(record.getRecordNumber());
personnelV.add(record.getName());
personnelV.add(record.getSex());
TbDutyInfo dutyInfo = record.getTbDutyInfo();
personnelV.add(dutyInfo.getTbDept().getName());
personnelV.add(dutyInfo.getTbDuty().getName());
tableValueV.add(personnelV);
}
}
private void showRecordInDept(TbDept dept) {
Iterator dutyInfoIt = dept.getTbDutyInfos().iterator();
int sequenceNumber = 1;
while (dutyInfoIt.hasNext()) {
TbDutyInfo dutyInfo = (TbDutyInfo) dutyInfoIt.next();
TbRecord record = dutyInfo.getTbRecord();
Vector personnelV = new Vector<String>();
personnelV.add(sequenceNumber++);
personnelV.add(record.getRecordNumber());
personnelV.add(record.getName());
personnelV.add(record.getSex());
personnelV.add(dutyInfo.getTbDept().getName());
personnelV.add(dutyInfo.getTbDuty().getName());
tableValueV.add(personnelV);
}
}
public JTable getTable() {
return table;
}
public void setTable(JTable table) {
this.table = table;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -