创建 浏览学生窗口BrowseStudentsFrame:
package net.wkl.student.gui;
import net.wkl.student.bean.Student;
import net.wkl.student.service.StudentService;
import net.wkl.student.service.impl.StudentServiceImpl;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.List;
/**
* 功能:浏览学生记录
* 作者:王凯龙
* 日期:2019年6月21日
*/
public class BrowseStudentsFrame extends JFrame {
private JPanel panel;
private JPanel pnlCenter;
private JPanel pnlRow1;
private JPanel pnlRow2;
private JPanel pnlRow3;
private JPanel pnlRow4;
private JPanel pnlRow5;
private JPanel pnlRow6;
private JPanel pnlRow7;
private JPanel pnlSouth;
private JLabel lblId;
private JLabel lblName;
private JLabel lblSex;
private JLabel lblAge;
private JLabel lblDepartment;
private JLabel lblClass;
private JLabel lblTelephone;
private JTextField txtId;
private JTextField txtName;
private JTextField txtSex;
private JTextField txtAge;
private JTextField txtDepartment;
private JTextField txtClass;
private JTextField txtTelephone;
private JButton btnTop;
private JButton btnPrevious;
private JButton btnNext;
private JButton btnBottom;
private JButton btnExit;
private int currentRow;
private List<Student> students;
StudentService studentService;
public BrowseStudentsFrame(String title) {
super(title);
initGUI();
}
private void initGUI() {
panel = (JPanel) getContentPane();
pnlCenter = new JPanel();
pnlSouth = new JPanel();
pnlRow1 = new JPanel();
pnlRow2 = new JPanel();
pnlRow3 = new JPanel();
pnlRow4 = new JPanel();
pnlRow5 = new JPanel();
pnlRow6 = new JPanel();
pnlRow7 = new JPanel();
pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));
lblId = new JLabel("学号:");
lblName = new JLabel("姓名:");
lblSex = new JLabel("性别:");
lblAge = new JLabel("年龄:");
lblDepartment = new JLabel("系部:");
lblClass = new JLabel("班级:");
lblTelephone = new JLabel("电话:");
txtId = new JTextField(40);
txtName = new JTextField(40);
txtSex = new JTextField(40);
txtAge = new JTextField(40);
txtDepartment = new JTextField(40);
txtClass = new JTextField(40);
txtTelephone = new JTextField(40);
txtId.setEditable(false);
txtName.setEditable(false);
txtSex.setEditable(false);
txtAge.setEditable(false);
txtDepartment.setEditable(false);
txtClass.setEditable(false);
txtTelephone.setEditable(false);
btnTop = new JButton("第一条[T]");
btnPrevious = new JButton("上一条[P]");
btnNext = new JButton("下一条[N]");
btnBottom = new JButton("最后一条[B]");
btnExit = new JButton("退出[X]");
btnTop.setMnemonic(KeyEvent.VK_T);
btnPrevious.setMnemonic(KeyEvent.VK_P);
btnNext.setMnemonic(KeyEvent.VK_N);
btnBottom.setMnemonic(KeyEvent.VK_B);
btnExit.setMnemonic(KeyEvent.VK_X);
panel.setLayout(new BorderLayout());
panel.add(pnlCenter, BorderLayout.CENTER);
panel.add(pnlSouth, BorderLayout.SOUTH);
pnlCenter.setLayout(new GridLayout(7, 1));
pnlCenter.add(pnlRow1);
pnlCenter.add(pnlRow2);
pnlCenter.add(pnlRow3);
pnlCenter.add(pnlRow4);
pnlCenter.add(pnlRow5);
pnlCenter.add(pnlRow6);
pnlCenter.add(pnlRow7);
pnlRow1.add(lblId);
pnlRow1.add(txtId);
pnlRow2.add(lblName);
pnlRow2.add(txtName);
pnlRow3.add(lblSex);
pnlRow3.add(txtSex);
pnlRow4.add(lblAge);
pnlRow4.add(txtAge);
pnlRow5.add(lblDepartment);
pnlRow5.add(txtDepartment);
pnlRow6.add(lblClass);
pnlRow6.add(txtClass);
pnlRow7.add(lblTelephone);
pnlRow7.add(txtTelephone);
pnlSouth.add(btnTop);
pnlSouth.add(btnPrevious);
pnlSouth.add(btnNext);
pnlSouth.add(btnBottom);
pnlSouth.add(btnExit);
setSize(500, 300);
setResizable(false);
pack();
setLocationRelativeTo(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
studentService = new StudentServiceImpl();
students = studentService.findAllStudents();
if (students.size() > 0) {
currentRow = 1;
setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
fillFrameData(currentRow);
} else {
JOptionPane.showMessageDialog(null, "表中没有记录!", "浏览学生表记录", JOptionPane.ERROR_MESSAGE);
btnTop.setEnabled(false);
btnPrevious.setEnabled(false);
btnNext.setEnabled(false);
btnBottom.setEnabled(false);
}
//第一条 按钮单击事件
btnTop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
currentRow = 1;
fillFrameData(currentRow);
}
});
//上一条 按钮单击事件
btnPrevious.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (currentRow > 1) {
// 设置当前记录号
currentRow--;
//填充当前记录数据
fillFrameData(currentRow);
} else {
JOptionPane.showMessageDialog(null, "已到第一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE);
}
}
});
//下一条 按钮单击事件
btnNext.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (currentRow < students.size() - 1) {
//设置当前记录号
currentRow++;
//填充当前记录数据
fillFrameData(currentRow);
} else {
JOptionPane.showMessageDialog(null, "已到最后一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE);
}
}
});
//最后一条 按钮单击事件
btnBottom.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//设置当前记录号
currentRow = students.size() - 1;
//填充当前记录数据
fillFrameData(currentRow);
}
});
//退出 按钮单击事件
btnExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
}
private void fillFrameData(int currentRow) {
if (currentRow > 0) {
setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
txtId.setText(students.get(currentRow).getId());
txtName.setText(students.get(currentRow).getName());
txtSex.setText(students.get(currentRow).getSex());
txtAge.setText(students.get(currentRow).getAge() + "");
txtDepartment.setText(students.get(currentRow).getDepartment());
txtClass.setText(students.get(currentRow).getClazz());
txtTelephone.setText(students.get(currentRow).getTelephone());
}
}
public static void main(String[] args) {
new BrowseStudentsFrame("");
}
}
运行结果如下:
创建 添加学生窗口AddStudentFrame
package net.wkl.student.gui;
import net.wkl.student.bean.Student;
import net.wkl.student.service.StudentService;
import net.wkl.student.service.impl.StudentServiceImpl;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
/**
* 功能:添加学生记录
* 作者:王凯龙
* 日期:2019年6月22日
*/
public class AddStudentFrame extends JFrame {
private JPanel panel;
private JPanel pnlCenter;
private JPanel pnlRow1;
private JPanel pnlRow2;
private JPanel pnlRow3;
private JPanel pnlRow4;
private JPanel pnlRow5;
private JPanel pnlRow6;
private JPanel pnlRow7;
private JPanel pnlSouth;
private JLabel lblId;
private JLabel lblName;
private JLabel lblSex;
private JLabel lblAge;
private JLabel lblDepartment;
private JLabel lblClass;
private JLabel lblTelephone;
private JTextField txtId;
private JTextField txtName;
private JTextField txtSex;
private JTextField txtAge;
private JTextField txtDepartment;
private JTextField txtClass;
private JTextField txtTelephone;
private JButton btnExit;
private JButton btnOK;
private JButton btnCancel;
private int currentRow;
private List<Student> students;
public AddStudentFrame(String title) {
super(title);
initGUI();
}
/**
* 初始化用户界面
*/
private void initGUI() {
// 创建组件
panel = (JPanel) getContentPane();
pnlCenter = new JPanel();
pnlSouth = new JPanel();
pnlRow1 = new JPanel();
pnlRow2 = new JPanel();
pnlRow3 = new JPanel();
pnlRow4 = new JPanel();
pnlRow5 = new JPanel();
pnlRow6 = new JPanel();
pnlRow7 = new JPanel();
pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));
lblId = new JLabel("学号:");
lblName = new JLabel("姓名:");
lblSex = new JLabel("性别:");
lblAge = new JLabel("年龄:");
lblDepartment = new JLabel("系部:");
lblClass = new JLabel("班级:");
lblTelephone = new JLabel("电话:");
txtId = new JTextField(20);
txtName = new JTextField(20);
txtSex = new JTextField(20);
txtAge = new JTextField(20);
txtDepartment = new JTextField(20);
txtClass = new JTextField(20);
txtTelephone = new JTextField(20);
btnOK = new JButton("确定[O]");
btnCancel = new JButton("取消[C]");
btnExit = new JButton("退出[X]");
btnOK.setMnemonic(KeyEvent.VK_O);
btnCancel.setMnemonic(KeyEvent.VK_C);
btnExit.setMnemonic(KeyEvent.VK_X);
panel.setLayout(new BorderLayout());
panel.add(pnlCenter, BorderLayout.CENTER);
panel.add(pnlSouth, BorderLayout.SOUTH);
pnlCenter.setLayout(new GridLayout(7, 1));
pnlCenter.add(pnlRow1);
pnlCenter.add(pnlRow2);
pnlCenter.add(pnlRow3);
pnlCenter.add(pnlRow4);
pnlCenter.add(pnlRow5);
pnlCenter.add(pnlRow6);
pnlCenter.add(pnlRow7);
pnlRow1.add(lblId);
pnlRow1.add(txtId);
pnlRow2.add(lblName);
pnlRow2.add(txtName);
pnlRow3.add(lblSex);
pnlRow3.add(txtSex);
pnlRow4.add(lblAge);
pnlRow4.add(txtAge);
pnlRow5.add(lblDepartment);
pnlRow5.add(txtDepartment);
pnlRow6.add(lblClass);
pnlRow6.add(txtClass);
pnlRow7.add(lblTelephone);
pnlRow7.add(txtTelephone);
pnlSouth.add(btnOK);
pnlSouth.add(btnCancel);
pnlSouth.add(btnExit);
// 设置窗口属性
setSize(500, 300);
// 设置窗口不可调整大小
setResizable(false);
// 设置窗口刚好容纳组件
pack();
// 设置窗口屏幕居中
setLocationRelativeTo(null);
// 设置窗口标题
setTitle("添加学生记录");
// 设置窗口可见
setVisible(true);
// 设置窗口默认关闭操作
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//确定 按钮单击事件
btnOK.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//学号非空校验
if (txtId.getText().trim().equals("")) {
JOptionPane.showMessageDialog(null, "学号不能为空!", "增加学生记录", JOptionPane.WARNING_MESSAGE);
txtId.requestFocus();
return;
}
//年龄数字校验
if (!isNumber(txtAge.getText().trim())) {
JOptionPane.showMessageDialog(null, "注意:年龄全由数字构成!", "增加学生记录", JOptionPane.WARNING_MESSAGE);
txtAge.setText("");
txtAge.requestFocus();
return;
}
//创建学生实体
Student student = new Student();
//设置学生实体属性
student.setId(txtId.getText().trim());
student.setName(txtName.getText().trim());
student.setSex(txtSex.getText().trim());
student.setAge(Integer.parseInt(txtAge.getText()));
student.setDepartment(txtDepartment.getText().trim());
student.setClazz(txtClass.getText().trim());
student.setTelephone(txtTelephone.getText().trim());
//创建学生服务对象
StudentService studentService = new StudentServiceImpl();
//添加学生记录
int count = studentService.addStudent(student);
//判断是否添加成功
if (count > 0) {
JOptionPane.showMessageDialog(null, "添加记录成功!", "增加学生记录", JOptionPane.INFORMATION_MESSAGE);
txtId.setText("");
txtName.setText("");
txtSex.setText("");
txtAge.setText("");
txtDepartment.setText("");
txtClass.setText("");
txtTelephone.setText("");
txtId.requestFocus();
} else {
JOptionPane.showMessageDialog(null, "添加记录失败!", "增加学生记录", JOptionPane.ERROR_MESSAGE);
}
}
});
//取消 按钮单击事件处理
btnCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txtId.setText("");
txtName.setText("");
txtSex.setText("");
txtAge.setText("");
txtDepartment.setText("");
txtClass.setText("");
txtTelephone.setText("");
txtId.requestFocus();
}
});
//退出 按钮单击事件处理
btnExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
});
//学号 文本框按键事件处理
txtId.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
if (!txtId.getText().trim().equals("")) {
txtName.requestFocus();
}
}
}
});
//姓名 文本框按键事件处理
txtName.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
txtSex.requestFocus();
}
}
});
//性别 文本框按键事件处理
txtSex.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
txtAge.requestFocus();
}
}
});
//年龄 文本框按键事件处理
txtAge.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
txtDepartment.requestFocus();
}
}
});
//系部 文本框按键事件处理
txtDepartment.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
txtClass.requestFocus();
}
}
});
//班级 文本框按键事件处理
txtClass.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
txtTelephone.requestFocus();
}
}
});
}
/**
* 判断一个字符串是否全是数字
* @param str
* @return
*/
boolean isNumber(String str) {
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) < '0' || str.charAt(i) > '9') {
return false;
}
}
return true;
}
public static void main(String[] args) {
new AddStudentFrame("");
}
}
运行结果如下: