代码结构:
business 包
EmployeeManager类
data包
AccessFile类
ui包
AddFrame类
MainFrame类
vo包
Employee类
效果展示:
EmployeeManager类:
package business;
import java.util.*;
import data.AccessFile;
import vo.Employee;
//实现所有的业务功能:新增员工,修改员工信息,删除员工信息,各种查询员工信息
public class EmployeeManager {
AccessFile af;
public EmployeeManager()
{
af=new AccessFile();
}
/**
* 新增员工
* @param e:待新增的员工对象
* @return:新增的结果的布尔值
*/
public boolean addEmployee(Employee e)
{
boolean result=false;
try {
//从文件读取集合,讲雇员加入集合,再将集合写入文件
List employees=af.readFile();
employees.add(e);
af.writeFile(employees);
result=true;
} catch (Exception e2) {
e2.printStackTrace();
}
return result;
}
//获取所有员工的信息
public List getEmployees() {
return af.readFile();
}
//根据id号进行查询
public Employee findEmployeeByID(String id) {
Employee employee=null;
//得到所有员工
List<Employee> employees=this.getEmployees();
for (Employee ee : employees) {
if (ee.getId().equals(id)) {
employee=ee;
break;
}
}
return employee;
}
//根据name进行查询
public List<Employee> findEmployeeByName(String name) {
List<Employee> emps=new ArrayList<Employee>();
//得到所有员工
List<Employee> employees=this.getEmployees();
for(Employee ee:employees) {
if (ee.getName().contains(name)) {
emps.add(ee);
}
}
return emps;
}
//用性别查找
public List<Employee> findEmployeeBysex(String sex) {
List<Employee> emps=new ArrayList<Employee>();
//得到所有员工
List<Employee> employees=this.getEmployees();
for(Employee ee:employees) {
if (ee.getSex().equals(sex)) {
emps.add(ee);
}
}
return emps;
}
public boolean deleteEmployee(String id) {
boolean result = false;
try {
List<Employee> employees = this.getEmployees();
Employee e = this.findEmployeeByID(id);
if(e == null) {
return false;
}
for (int i = 0; i<employees.size();i++) {
Employee ee = employees.get(i);
if(ee.getId().equals(id)) {
employees.remove(i);
af.writeFile(employees);
result = true;
break;
}
}
}catch(Exception ex) {
ex.getStackTrace();
}
return result;
}
/**
* 修改雇员
* @param id:雇员id号
* @param newemp:新的雇员信息
* @return
*/
public boolean updateEmployee(String id, Employee newemp)
{
boolean result=false;
try {
List<Employee> employees=this.getEmployees();
for(Employee ee:employees)
{
if(ee.getId().equals(id))
{
ee.setPost(newemp.getPost());
ee.setName(newemp.getName());
ee.setSex(newemp.getSex());
ee.setDuty(newemp.getDuty());
ee.setDegree(newemp.getDegree());
ee.setDept(newemp.getDept());
break;
}
}
af.writeFile(employees);
result=true;
}catch(Exception ex)
{
ex.printStackTrace();
}
return result;
}
}
AccessFile类:
package data;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
//访问文件
public class AccessFile {
public static final String FILENAME="D:\\employee.dat";
/**
* 将集合employees写入文件
* @param employees:List集合对象
*/
public void writeFile(List employees)
{
//初始情况
if(employees==null)
{
employees=new ArrayList();
}
try {
FileOutputStream fout=new FileOutputStream(FILENAME);//节点流
ObjectOutputStream objout=new ObjectOutputStream(fout);//处理流
objout.writeObject(employees);//将集合对象写入文件
objout.flush();
objout.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
}
/**
* 读文件
* @return:返回读出的集合对象
*/
public List readFile()
{
List employees=null;
try
{
File file=new File(FILENAME);
if(file.exists()==false)//文件不存在
{
this.writeFile(null);//利用写文件的方法来创建文件
}
if(file.length()==0)//文件存在,但是文件是空的
{
return employees;
}
FileInputStream fin=new FileInputStream(file);//节点流
ObjectInputStream objin=new ObjectInputStream(fin);//处理流
employees=(List)objin.readObject();
objin.close();
}catch(Exception ex)
{
ex.printStackTrace();
}
return employees;
}
}
AddFrame类:
package ui;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTabbedPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JPasswordField;
import javax.swing.JEditorPane;
import java.awt.event.ActionListener;
import java.util.List;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.border.EtchedBorder;
import business.EmployeeManager;
import data.AccessFile;
import vo.Employee;
import java.awt.Font;
import javax.swing.JTextPane;
import javax.swing.AbstractButton;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JScrollBar;
import javax.swing.JProgressBar;
import javax.swing.ImageIcon;
public class AddFrame extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private final JButton btnNewButton = new JButton("\u4FDD\u5B58");
private JTextField textField_5;
JComboBox comboBox_2,comboBox_3,comboBox_1,comboBox,comboBox_4;
EmployeeManager em;
AccessFile af;
String id;
public AddFrame(String id)
{
this();//调用不带参的构造方法
//获取传递过来的id
this.id=id;
//将id赋给文本框
this.textField.setText(id);
//根据id号找到雇员
Employee e=em.findEmployeeByID(id);
//将原来雇员的信息填充到相应的组件上
textField_4.setText(e.getName());
comboBox_2.setSelectedItem(e.getSex());
comboBox_3.setSelectedItem(e.getDept());
comboBox_1.setSelectedItem(e.getPost());
comboBox.setSelectedItem(e.getDuty());
comboBox_4.setSelectedItem(e.getDegree());
//将按钮的文本修改“修改”
btnNewButton.setText("修改");
}
/**
* Create the frame.
*/
public AddFrame() {
setTitle("\u5458\u5DE5\u4FE1\u606F");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 968, 551);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.setBounds(10, 10, 936, 450);
contentPane.add(tabbedPane);
JPanel panel = new JPanel();
panel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
tabbedPane.addTab("基本信息", null, panel, null);
panel.setLayout(null);
textField = new JTextField();
textField.setBounds(69, 10, 115, 29);
panel.add(textField);
textField.setColumns(10);
comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] { "\u79D1\u957F" }));
comboBox.setBounds(69, 55, 115, 29);
panel.add(comboBox);
comboBox_1 = new JComboBox();
comboBox_1.setModel(new DefaultComboBoxModel(new String[] { "\u8D22\u52A1\u603B\u76D1" }));
comboBox_1.setBounds(69, 101, 115, 29);
panel.add(comboBox_1);
comboBox_2 = new JComboBox();
comboBox_2.setModel(new DefaultComboBoxModel(new String[] { "\u7537", "\u5973" }));
comboBox_2.setBounds(69, 146, 115, 29);
panel.add(comboBox_2);
textField_1 = new JTextField();
textField_1.setBounds(69, 191, 115, 29);
panel.add(textField_1);
textField_1.setColumns(10);
comboBox_3 = new JComboBox();
comboBox_3.setModel(new DefaultComboBoxModel(new String[] { "\u8D22\u52A1\u79D1" }));
comboBox_3.setBounds(299, 9, 157, 29);
panel.add(comboBox_3);
comboBox_4 = new JComboBox();
comboBox_4.setModel(new DefaultComboBoxModel(new String[] { "\u672C\u79D1" }));
comboBox_4.setBounds(299, 55, 157, 29);
panel.add(comboBox_4);
JComboBox comboBox_5 = new JComboBox();
comboBox_5.setModel(new DefaultComboBoxModel(new String[] { "\u884C\u653F\u7BA1\u7406\u4EBA\u5458" }));
comboBox_5.setBounds(299, 101, 157, 29);
panel.add(comboBox_5);
textField_2 = new JTextField();
textField_2.setBounds(299, 147, 157, 28);
panel.add(textField_2);
textField_2.setColumns(10);
textField_3 = new JTextField();
textField_3.setBounds(299, 191, 403, 29);
panel.add(textField_3);
textField_3.setColumns(10);
textField_4 = new JTextField();
textField_4.setBounds(581, 10, 121, 29);
panel.add(textField_4);
textField_4.setColumns(10);
JComboBox comboBox_6 = new JComboBox();
comboBox_6.setModel(new DefaultComboBoxModel(new String[] { "\u6B63\u5F0F\u5408\u540C\u5DE5" }));
comboBox_6.setBounds(581, 55, 121, 29);
panel.add(comboBox_6);
JComboBox comboBox_7 = new JComboBox();
comboBox_7.setModel(new DefaultComboBoxModel(new String[] { "\u4E00\u7EA7\u4E00\u7B49" }));
comboBox_7.setBounds(581, 101, 121, 29);
panel.add(comboBox_7);
JLabel lblNewLabel = new JLabel("\u5DE5\u53F7");
lblNewLabel.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel.setBounds(10, 13, 49, 26);
panel.add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("\u804C\u4F4D");
lblNewLabel_1.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_1.setBounds(10, 59, 49, 25);
panel.add(lblNewLabel_1);
JLabel lblNewLabel_2 = new JLabel("\u5C97\u4F4D");
lblNewLabel_2.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_2.setBounds(10, 105, 49, 25);
panel.add(lblNewLabel_2);
JLabel lblNewLabel_3 = new JLabel("\u6027\u522B");
lblNewLabel_3.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_3.setBounds(10, 150, 49, 25);
panel.add(lblNewLabel_3);
JLabel lblNewLabel_4 = new JLabel("\u624B\u673A");
lblNewLabel_4.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_4.setBounds(10, 194, 49, 26);
panel.add(lblNewLabel_4);
JLabel lblNewLabel_5 = new JLabel("\u5907\u6CE8");
lblNewLabel_5.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_5.setBounds(10, 233, 47, 28);
panel.add(lblNewLabel_5);
JLabel lblNewLabel_6 = new JLabel("\u90E8\u95E8");
lblNewLabel_6.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_6.setBounds(220, 13, 54, 21);
panel.add(lblNewLabel_6);
JLabel lblNewLabel_7 = new JLabel("\u5B66\u5386");
lblNewLabel_7.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_7.setBounds(220, 59, 54, 25);
panel.add(lblNewLabel_7);
JLabel lblNewLabel_8 = new JLabel("\u5C97\u4F4D\u7C7B\u522B");
lblNewLabel_8.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_8.setBounds(208, 105, 66, 25);
panel.add(lblNewLabel_8);
JLabel lblNewLabel_9 = new JLabel("\u8EAB\u4EFD\u8BC1\u53F7");
lblNewLabel_9.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_9.setBounds(208, 150, 66, 25);
panel.add(lblNewLabel_9);
JLabel lblNewLabel_10 = new JLabel("\u5BB6\u5EAD\u4F4F\u5740");
lblNewLabel_10.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_10.setBounds(208, 194, 66, 26);
panel.add(lblNewLabel_10);
JLabel lblNewLabel_11 = new JLabel("\u59D3\u540D");
lblNewLabel_11.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_11.setBounds(492, 13, 54, 21);
panel.add(lblNewLabel_11);
JLabel lblNewLabel_12 = new JLabel("\u8058\u7528\u7C7B\u578B");
lblNewLabel_12.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_12.setBounds(480, 59, 66, 25);
panel.add(lblNewLabel_12);
JLabel lblNewLabel_13 = new JLabel("\u5C97\u4F4D\u7B49\u7EA7");
lblNewLabel_13.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_13.setBounds(480, 105, 66, 25);
panel.add(lblNewLabel_13);
JLabel lblNewLabel_14 = new JLabel("\u8FDB\u5382\u65E5\u671F");
lblNewLabel_14.setFont(new Font("宋体", Font.BOLD, 14));
lblNewLabel_14.setBounds(480, 150, 66, 25);
panel.add(lblNewLabel_14);
JTextPane textPane = new JTextPane();
textPane.setBounds(50, 233, 847, 178);
panel.add(textPane);
JLabel lblNewLabel_15 = new JLabel("New label");
// lblNewLabel_15.setIcon(new
// ImageIcon(AddFrame.class.getResource("/\u7A97\u53E31/\u5C4F\u5E55\u622A\u56FE
// 2022-05-08 213207.png")));
lblNewLabel_15.setBounds(735, 17, 162, 203);
panel.add(lblNewLabel_15);
textField_5 = new JTextField();
textField_5.setBounds(581, 150, 121, 25);
panel.add(textField_5);
textField_5.setColumns(10);
JPanel panel_1 = new JPanel();
tabbedPane.addTab("合同信息", null, panel_1, null);
panel_1.setLayout(null);
JPanel panel_2 = new JPanel();
tabbedPane.addTab("工作经历", null, panel_2, null);
panel_2.setLayout(null);
btnNewButton.setFont(new Font("宋体", Font.BOLD, 18));
//保存和修改
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(btnNewButton.getText().equals("保存"))
{
saveEmployee();
}else if(btnNewButton.getText().equals("修改"))
{
updateEmployee();
}
}
});
btnNewButton.setBounds(404, 470, 73, 28);
contentPane.add(btnNewButton);
JButton btnNewButton_1 = new JButton("\u5173\u95ED");
btnNewButton_1.setFont(new Font("宋体", Font.BOLD, 18));
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Employee employee = new Employee();
employee.setName(textField_4.getText());
}
});
btnNewButton_1.setBounds(479, 470, 73, 28);
contentPane.add(btnNewButton_1);
em = new EmployeeManager();
af = new AccessFile();
this.textField.setText(this.getEmployeeID());
this.textField.setEditable(false);
}
//修改员工
protected void updateEmployee() {
Employee employee = new Employee();
employee.setName(textField_4.getText());
employee.setSex(comboBox_2.getSelectedItem().toString());
employee.setDept(comboBox_3.getSelectedItem().toString());
employee.setId(textField.getText());
employee.setPost(comboBox_1.getSelectedItem().toString());
employee.setDuty(comboBox.getSelectedItem().toString());
employee.setDegree(comboBox_4.getSelectedItem().toString());
//调用业务方法
if(em.updateEmployee(textField.getText().trim(), employee)) {
JOptionPane.showMessageDialog(AddFrame.this, "员工信息修改成功");
MainFrame mainFrame=new MainFrame();
mainFrame.setVisible(true);
AddFrame.this.dispose();
}
else {
JOptionPane.showMessageDialog(AddFrame.this, "员工信息修改失败");
}
}
//新增一个员工
protected void saveEmployee() {
Employee employee = new Employee();
employee.setName(textField_4.getText());
employee.setSex(comboBox_2.getSelectedItem().toString());
employee.setDept(comboBox_3.getSelectedItem().toString());
employee.setId(textField.getText());
employee.setPost(comboBox_1.getSelectedItem().toString());
employee.setDuty(comboBox.getSelectedItem().toString());
employee.setDegree(comboBox_4.getSelectedItem().toString());
if(em.addEmployee(employee)) {
JOptionPane.showMessageDialog(AddFrame.this, "员工添加成功");
MainFrame mainFrame=new MainFrame();
mainFrame.setVisible(true);
AddFrame.this.dispose();
}
else {
JOptionPane.showMessageDialog(AddFrame.this, "员工添加失败");
}
}
// 生成新员工的id号
private String getEmployeeID() {
String id = "";
List employees = af.readFile();
if (employees == null || employees.size() == 0) {
id = "202201001";
} else {
// 取出集合中的最后一个元素
Employee e = (Employee) employees.get(employees.size() - 1);
String lastid = e.getId();
int code = Integer.parseInt(lastid.substring(6, 9));
code += 1;
if (code < 10) {
id = lastid.substring(0, 8) + code;
} else if (code < 100) {
id = lastid.substring(0, 7) + code;
} else {
id = lastid.substring(0, 6) + code;
}
}
return id;
}
}
MainFrame类:
package ui;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;
import javax.swing.BoxLayout;
import javax.swing.JTextPane;
import javax.swing.JTree;
import javax.swing.JTable;
import javax.swing.border.TitledBorder;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import java.awt.event.ActionEvent;
import java.awt.Color;
import java.awt.Component;
import javax.swing.border.EtchedBorder;
import javax.swing.table.DefaultTableModel;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.Frame;
import javax.swing.JEditorPane;
import javax.swing.JCheckBox;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.tree.DefaultTreeModel;
import business.EmployeeManager;
import vo.Employee;
import javax.swing.tree.DefaultMutableTreeNode;
public class MainFrame extends JFrame {
private JPanel contentPane;
private JTable table;
private JTextField textField;
private JTextField textField_1;
EmployeeManager em;
DefaultTableModel dtm;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainFrame() {
setTitle("\u5458\u5DE5\u4FE1\u606F\u6536\u96C6\u8868");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 896, 501);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(
new TitledBorder(null, "\u67E5\u8BE2\u6761\u4EF6", TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel.setForeground(new Color(0, 0, 0));
panel.setBounds(158, 10, 573, 153);
contentPane.add(panel);
textField = new JTextField();
textField.setColumns(10);
textField_1 = new JTextField();
textField_1.setColumns(10);
JComboBox comboBox = new JComboBox();
comboBox.addItem("选择");
comboBox.addItem("男");
comboBox.addItem("女");
JComboBox comboBox_1 = new JComboBox();
comboBox_1.addItem("选择");
comboBox_1.addItem("总经理");
comboBox_1.addItem("副总经理");
comboBox_1.addItem("科长");
JComboBox comboBox_2 = new JComboBox();
comboBox_2.addItem("选择");
comboBox_2.addItem("博士");
comboBox_2.addItem("硕士");
comboBox_2.addItem("本科");
comboBox_2.addItem("大专");
JComboBox comboBox_3 = new JComboBox();
comboBox_3.addItem("选择");
comboBox_3.addItem("总经理");
comboBox_3.addItem("财务总监");
comboBox_3.addItem("主任");
comboBox_3.addItem("技术总监");
JLabel lblNewLabel = new JLabel("\u5DE5\u53F7");
JLabel lblNewLabel_1 = new JLabel("\u804C\u4F4D");
JLabel lblNewLabel_2 = new JLabel("\u59D3\u540D");
JLabel lblNewLabel_3 = new JLabel("\u5B66\u5386");
JLabel lblNewLabel_4 = new JLabel("\u6027\u522B");
JLabel lblNewLabel_5 = new JLabel("\u5C97\u4F4D");
GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(gl_panel.createParallelGroup(Alignment.LEADING).addGroup(gl_panel
.createSequentialGroup().addContainerGap()
.addGroup(gl_panel
.createParallelGroup(Alignment.LEADING).addComponent(lblNewLabel).addComponent(lblNewLabel_1))
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING, false).addComponent(textField)
.addComponent(comboBox_1, 0, 111, Short.MAX_VALUE))
.addGap(54)
.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING).addComponent(lblNewLabel_2)
.addComponent(lblNewLabel_3))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false).addComponent(textField_1)
.addComponent(comboBox_2, 0, 112, Short.MAX_VALUE))
.addPreferredGap(ComponentPlacement.RELATED, 49, Short.MAX_VALUE)
.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING).addComponent(lblNewLabel_4)
.addComponent(lblNewLabel_5))
.addPreferredGap(ComponentPlacement.UNRELATED)
.addGroup(gl_panel.createParallelGroup(Alignment.TRAILING, false)
.addComponent(comboBox_3, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(comboBox, 0, 119, Short.MAX_VALUE))
.addContainerGap()));
gl_panel.setVerticalGroup(gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup().addGap(25)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(comboBox, GroupLayout.PREFERRED_SIZE, 23, GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel).addComponent(lblNewLabel_4)
.addComponent(textField_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_2))
.addGap(26)
.addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
.addComponent(comboBox_3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(comboBox_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_1).addComponent(lblNewLabel_5)
.addComponent(comboBox_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE)
.addComponent(lblNewLabel_3))
.addContainerGap(33, Short.MAX_VALUE)));
panel.setLayout(gl_panel);
JPanel panel_1 = new JPanel();
panel_1.setBorder(new TitledBorder(
new EtchedBorder(EtchedBorder.LOWERED, new Color(255, 255, 255), new Color(160, 160, 160)),
"\u5458\u5DE5\u4FE1\u606F\u5217\u8868", TitledBorder.LEADING, TitledBorder.TOP, null,
new Color(0, 0, 0)));
panel_1.setBounds(158, 194, 716, 262);
contentPane.add(panel_1);
panel_1.setLayout(new BorderLayout());
// 表格
Object[] cObjects = { "\u5DE5\u53F7", "\u90E8\u95E8", "\u59D3\u540D", "\u6027\u522B", "\u804C\u4F4D",
"\u5C97\u4F4D", "\u5B66\u5386" };
Object[][] bObjects = { { "200201001", "管理科", "张军", "男", "总经理", "总经理", "硕士" },
{ "200201002", "财务科", "郭笑", "女", "科长", "财务总监", "本科" },
{ "200201003", "管理科", "唐撮", "男", "副总经理", "总经理", "博士" },
{ "200201005", "技术科", "杨思远", "男", "科长", "主任", "大专" },
{ "200201004", "技术科", "卓一凡", "女", "科长", "技术总监", "本科" } };
// 用模型去填充
dtm = new DefaultTableModel(bObjects, cObjects) {
@Override
//单元格是否可编辑
public boolean isCellEditable(int row, int column) {
return false;
}
};
table = new JTable(dtm);
// dtm.addTableModelListener(new TableModelListener() {
//
// @Override
// public void tableChanged(TableModelEvent e) {
// if(e.getType()==TableModelEvent.UPDATE)
// {
// System.err.println("update");
// }
//
// }
// });
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if(e.getClickCount()==2)//双击
{
String id=table.getValueAt(table.getSelectedRow(), 0).toString();
AddFrame addFrame=new AddFrame(id);
addFrame.setVisible(true);
MainFrame.this.dispose();
}
}
});
panel_1.add(table.getTableHeader(), BorderLayout.NORTH);
panel_1.add(table, BorderLayout.CENTER);
JButton btnNewButton = new JButton("\u67E5\u8BE2");// 查询
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!textField.getText().equals("")) {
findbyid();// 调取
} else if (!textField_1.getText().equals("")) {
findbyname();
} else if (!comboBox.getSelectedItem().equals("选择")) {
findbysex(comboBox.getSelectedItem().toString());
comboBox.setSelectedItem(0);// 将下拉列表复原
}
}
});
btnNewButton.setBounds(741, 10, 108, 41);
contentPane.add(btnNewButton);
JButton btnNewButton_1 = new JButton("\u65B0\u589E");// 新增
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
AddFrame addFrame = new AddFrame();
addFrame.setVisible(true);
MainFrame.this.dispose();// 销毁当前界面
}
});
btnNewButton_1.setBounds(741, 69, 108, 41);
contentPane.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("\u5220\u9664");// 删除
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//table.getSelectedRow() == -1表示用户没有在JTable控件上选择行
if (table.getSelectedRow() == -1) {
JOptionPane.showMessageDialog(MainFrame.this, "请选择要删除的记录");
}
else {
//table.getValueAt(table.getSelectedRow(), 0).toString()获得指定行列单元格的值
String id = table.getValueAt(table.getSelectedRow(), 0).toString();
//
if (JOptionPane.showConfirmDialog(MainFrame.this, "确实要删除吗?", "删除",
JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) {
//调用业务方法
if (em.deleteEmployee(id)) {
//fillDataToTable(em.getEmployees());
dtm.removeRow(table.getSelectedRow());
} else {
JOptionPane.showMessageDialog(MainFrame.this, "删除雇员失败");
}
}
}
}
});
btnNewButton_2.setBounds(741, 131, 108, 41);
contentPane.add(btnNewButton_2);
JTree tree = new JTree();
tree.setModel(new DefaultTreeModel(new DefaultMutableTreeNode("\u8BDA\u4FE1") {
{
DefaultMutableTreeNode node_1;
node_1 = new DefaultMutableTreeNode("\u884C\u653F\u90E8\u95E8");
node_1.add(new DefaultMutableTreeNode("blue"));
node_1.add(new DefaultMutableTreeNode("violet"));
node_1.add(new DefaultMutableTreeNode("red"));
node_1.add(new DefaultMutableTreeNode("yellow"));
add(node_1);
node_1 = new DefaultMutableTreeNode("\u8D22\u52A1\u90E8");
node_1.add(new DefaultMutableTreeNode("basketball"));
node_1.add(new DefaultMutableTreeNode("soccer"));
node_1.add(new DefaultMutableTreeNode("football"));
node_1.add(new DefaultMutableTreeNode("hockey"));
add(node_1);
node_1 = new DefaultMutableTreeNode("\u6280\u672F\u79D1");
node_1.add(new DefaultMutableTreeNode("hot dogs"));
node_1.add(new DefaultMutableTreeNode("pizza"));
node_1.add(new DefaultMutableTreeNode("ravioli"));
node_1.add(new DefaultMutableTreeNode("bananas"));
add(node_1);
node_1 = new DefaultMutableTreeNode("供销部");
node_1.add(new DefaultMutableTreeNode("hot dogs"));
node_1.add(new DefaultMutableTreeNode("pizza"));
node_1.add(new DefaultMutableTreeNode("ravioli"));
node_1.add(new DefaultMutableTreeNode("bananas"));
add(node_1);
}
}));
tree.setBounds(0, 10, 148, 446);
contentPane.add(tree);
em = new EmployeeManager();
if (em.getEmployees() == null || em.getEmployees().size() == 0) {
JOptionPane.showMessageDialog(this, "当前还没有员工");
}
// 读取文件,讲集合中的信息填入表格
fillDataToTable(em.getEmployees());
}
// 用性别去查
protected void findbysex(String sex) {
List<Employee> emps = em.findEmployeeBysex(sex);
if (emps == null || emps.size() == 0) {
JOptionPane.showMessageDialog(MainFrame.this, "没有" + sex + "的员工");
} else {
fillDataToTable(emps);
}
}
// 用name去查
protected void findbyname() {
String name = textField_1.getText().trim();
List<Employee> emps = em.findEmployeeByName(name);
if (emps == null || emps.size() == 0) {
JOptionPane.showMessageDialog(MainFrame.this, "没有" + name + "的员工");
} else {
fillDataToTable(emps);
}
textField_1.setText("");
}
// 用ID去查
protected void findbyid() {
String id = textField.getText().trim();
Employee employee = em.findEmployeeByID(id);
if (employee == null) {
JOptionPane.showMessageDialog(MainFrame.this, "没有" + id + "的员工");
textField.setText("");
} else {
List list = new ArrayList<Employee>();
list.add(employee);
fillDataToTable(list);
textField.setText("");
}
}
private void fillDataToTable(List employees) {
// 用表格的默认模型类去填充表格
// 获得界面上表格对象的默认模型对象
DefaultTableModel tableModel = (DefaultTableModel) this.table.getModel();
// 将模型中原有的数据清空
tableModel.setRowCount(0);
// 结合集合的遍历进行数据填充
for (Object e : employees) {
Employee employee = (Employee) e;
String str[] = new String[7];
str[0] = employee.getId();
str[1] = employee.getDept();
str[2] = employee.getName();
str[3] = employee.getSex();
str[4] = employee.getDuty();
str[5] = employee.getPost();
str[6] = employee.getDegree();
// 数据填充
tableModel.addRow(str);
}
// 刷新表格
this.table.invalidate();
}
}
Employee类:
package vo;
import java.io.Serializable;
public class Employee implements Serializable {
//工号id,部门dept,姓名name,性别sex,职务duty,岗位post,学历degree
String id;
String dept;
String name;
String sex;
String duty;
String post;
String degree;
public Employee(String id, String dept, String name, String sex, String duty, String post, String degree) {
super();
this.id = id;
this.dept = dept;
this.name = name;
this.sex = sex;
this.duty = duty;
this.post = post;
this.degree = degree;
}
public Employee() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getDuty() {
return duty;
}
public void setDuty(String duty) {
this.duty = duty;
}
public String getPost() {
return post;
}
public void setPost(String post) {
this.post = post;
}
public String getDegree() {
return degree;
}
public void setDegree(String degree) {
this.degree = degree;
}
}
代码均为自己编写,可自行使用,本人小白,望各位大佬指点。