【0714】JAVA实训第6、7次总结

JAVA实训第6、7次总结
计应3班 彭卉
本次实训主要完成第十四讲内容,面向用户的图形界面程序的测试代码,在打代码的时候就感觉更好玩些,能很只管直观的感受到自己代码的成效,而且大多数方法代码的内容都是换汤不换药的,打起来还是比较容易,只不过确实测试内容还收比较多的,但是当图形界面弹出在屏幕上的时候还是有成就感的。
在这里插入图片描述
遇见的问题
1.弹出的消息框一直为DeleteStudentById的内容,而且查询结果提示为没有符合条件的查询结果,检查之后发现是设置文本框内容:
txtDepartment.setText(table.getValueAt(row, 4).toString());与我DeleteStudentByClassFrame中的数值设置错误,所以无法成功获得正确的记录值。
在这里插入图片描述
2.在运行图形界面框架时,别的同学的查询弹出结果老是为“没有符合查询的条件结果”,在询问老师过后,老师也没解决这个问题,可能是运行环境配置问题。下次若果遇见相应问题可以略过。

运行结果展示:

package net.ph.student.gui;
/**
 * 
 * 功能:浏览学生记录
 * @author 彭卉
 *日期:2020年07月11日
 *
 */

import net.ph.student.bean.Student;
import net.ph.student.service.StudentService;
import net.ph.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;

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.DISPOSE_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()) {
                    // 设置当前记录号
                    currentRow++;
                    // 填充当前记录数据
                    fillFrameData(currentRow);
                } else {
                    JOptionPane.showMessageDialog(null, "已到最后一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE);
                }
            }
        });

        // 【最后一条】按钮单击事件
        btnBottom.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 设置当前记录号
                currentRow = students.size();
                // 填充当前记录数据
                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 -1).getId());
            txtName.setText(students.get(currentRow - 1).getName());
            txtSex.setText(students.get(currentRow - 1).getSex());
            txtAge.setText(students.get(currentRow - 1).getAge() + "");
            txtDepartment.setText(students.get(currentRow - 1).getDepartment());
            txtClass.setText(students.get(currentRow - 1).getClazz());
            txtTelephone.setText(students.get(currentRow - 1).getTelephone());
            
        }
    }

    public static void main(String[] args) {
        new BrowseStudentsFrame("");
    }

	
}

在这里插入图片描述

package net.ph.student.gui;
/**
 * 功能:编辑学生记录
 * @author 彭卉
 *日期:2020年07月13日
 */
import net.ph.student.bean.Student;
import net.ph.student.service.StudentService;
import net.ph.student.service.impl.StudentServiceImpl;

import javax.swing.*;
import java.util.List;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EditStudentFrame 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 JPanel pnlSouth1;
	    private JPanel pnlSouth2;
	    
	    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 JButton btnEdit;
	    private JButton btnOK;
	    private JButton btnCancel;
	   // 当前记录行号
	    private int currentRow; 
	    // 学生列表
	    private List<Student> students; 
	    // 创建学生服务对象
	    StudentService studentService; 
	   
	    public EditStudentFrame(String title) {
	        super(title);
	        initGUI();
	    }

	    /**
	     * 初始化用户界面
	     */
	    private void initGUI() {
	        // 创建组件
	        panel = (JPanel) getContentPane();
	        pnlCenter = new JPanel();
	        pnlSouth = new JPanel();
	        pnlSouth.setLayout(new GridLayout(2, 1));

	        pnlRow1 = new JPanel();
	        pnlRow2 = new JPanel();
	        pnlRow3 = new JPanel();
	        pnlRow4 = new JPanel();
	        pnlRow5 = new JPanel();
	        pnlRow6 = new JPanel();
	        pnlRow7 = new JPanel();
	        pnlSouth1 = new JPanel();
	        pnlSouth2 = 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]");
	        btnEdit = new JButton("编辑[E]");
	        btnOK = new JButton("确定[O]");
	        btnCancel = new JButton("取消[C]");
	        btnOK.setEnabled(false);
	        btnCancel.setEnabled(false);
	        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);
	        btnEdit.setMnemonic(KeyEvent.VK_E);
	        btnOK.setMnemonic(KeyEvent.VK_O);
	        btnCancel.setMnemonic(KeyEvent.VK_C);

	        // 添加组件
	        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(pnlSouth1);
	        pnlSouth.add(pnlSouth2);
	        pnlSouth1.add(btnTop);
	        pnlSouth1.add(btnPrevious);
	        pnlSouth1.add(btnNext);
	        pnlSouth1.add(btnBottom);
	        pnlSouth1.add(btnExit);
	        pnlSouth2.add(btnEdit);
	        pnlSouth2.add(btnOK);
	        pnlSouth2.add(btnCancel);

	        // 设置窗口属性
	        setSize(500, 300);
	        // 设置窗口不可调整大小
	        setResizable(false);
	        // 设置窗口刚好容纳组件
	        pack();
	        // 设置窗口屏幕居中
	        setLocationRelativeTo(null);
	        // 设置窗口可见
	        setVisible(true);
	        // 设置窗口默认关闭操作(卸载当前窗口)
	        setDefaultCloseOperation(JFrame.DISPOSE_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();
	            }
	        });

	        // 【编辑】按钮单击事件
	        btnEdit.addActionListener(new ActionListener() {
	            @Override
	            public void actionPerformed(ActionEvent e) {
	                // 设置窗口标题
	                setTitle("编辑学生表记录" + " && 当前记录:" + currentRow);

	                txtName.setEditable(true);
	                txtSex.setEditable(true);
	                txtAge.setEditable(true);
	                txtDepartment.setEditable(true);
	                txtClass.setEditable(true);
	                txtTelephone.setEditable(true);
	                btnOK.setEnabled(true);
	                btnCancel.setEnabled(true);
	            }
	        });

	        // 【确定】按钮单击事件
	        btnOK.addActionListener(new ActionListener() {
	            @Override
	            public void actionPerformed(ActionEvent e) {
	                // 获取当前学生实体
	                Student student = students.get(currentRow);

	                if (isNumber(txtAge.getText())) {
	                    if (isLegalTelephone(txtTelephone.getText())) {
	                        // 修改学生实体属性
	                        student.setName(txtName.getText());
	                        student.setSex(txtSex.getText());
	                        student.setAge(Integer.parseInt(txtAge.getText()));
	                        student.setDepartment(txtDepartment.getText());
	                        student.setClazz(txtClass.getText());
	                        student.setTelephone(txtTelephone.getText());
	                        // 更新学生信息
	                        int count = studentService.updateStudent(student);
	                        // 判断是否更新成功
	                        if (count > 0) {
	                            JOptionPane.showMessageDialog(null, "更新记录成功!", "编辑学生记录", JOptionPane.INFORMATION_MESSAGE);
	                            btnOK.setEnabled(false);
	                            btnCancel.setEnabled(false);
	                            btnEdit.setEnabled(true);
	                            txtName.setEditable(false);
	                            txtSex.setEditable(false);
	                            txtAge.setEditable(false);
	                            txtDepartment.setEditable(false);
	                            txtClass.setEditable(false);
	                            txtTelephone.setEditable(false);
	                            // 重新获取全部学生列表
	                            students = studentService.findAllStudents();
	                            // 设置窗口标题
	                            setTitle("浏览学生表记录" + " && 当前记录:" + currentRow);
	                        } else {
	                            JOptionPane.showMessageDialog(null, "更新记录失败!", "编辑学生记录", JOptionPane.ERROR_MESSAGE);
	                        }
	                    } else {
	                        JOptionPane.showMessageDialog(null, "非法手机号!", "编辑学生记录", JOptionPane.ERROR_MESSAGE);
	                        txtTelephone.selectAll();
	                        txtTelephone.requestFocus();
	                    }
	                } else {
	                    JOptionPane.showMessageDialog(null, "年龄必须是数字!", "编辑学生记录", JOptionPane.ERROR_MESSAGE);
	                    txtAge.selectAll();
	                    txtAge.requestFocus();
	                }
	            }
	        });

	        // 【取消】按钮单击事件
	        btnCancel.addActionListener(new ActionListener() {
	            @Override
	            public void actionPerformed(ActionEvent e) {
	                btnOK.setEnabled(false);
	                btnCancel.setEnabled(false);
	                btnEdit.setEnabled(true);
	                txtName.setEditable(false);
	                txtSex.setEditable(false);
	                txtAge.setEditable(false);
	                txtDepartment.setEditable(false);
	                txtClass.setEditable(false);
	                txtTelephone.setEditable(false);
	                // 恢复文本框修改前的值
	                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());
	            }
	        });

	        // 【学号】文本框按键事件
	        txtId.addKeyListener(new KeyAdapter() {
	            @Override
	            public void keyPressed(KeyEvent e) {
	                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
	                    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 currentRow
	     */
	    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());
	        }
	    }

	    // 判断一个字符串是否全是数字
	    private 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;
	    }

//	      判断是否合法手机号	 
	    private boolean isLegalTelephone(String telephone) {
	        Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");
	        Matcher m = p.matcher(telephone);
	        return m.matches();
	    }

//	      主方法
	    public static void main(String[] args) {
	        new EditStudentFrame("");
	    }
	
}

在这里插入图片描述

package net.ph.student.gui;

import net.ph.student.service.StudentService;
import net.ph.student.service.impl.StudentServiceImpl;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.print.PrinterException;
import java.util.Vector;

/**
 * 功能:按班级统计学生人数
 */
public class CountStudentsByClassFrame extends JFrame {
    private JPanel panel;
    private JPanel pnlSouth;
    private JPanel pnlCenter;

    private JButton btnPrint;
    private JButton btnExit;

    private JScrollPane scroller; // 滚动面板

    private Vector rows; // 记录行集
    private Vector<String> colHead; // 表格列标题
    private JTable table; // 表格
    private StudentService studentService; // 学生服务对象

    public CountStudentsByClassFrame(String title) {
        super(title);
        initGUI();
    }

    /**
     * 初始化用户界面
     */
    private void initGUI() {
        // 创建组件
        panel = (JPanel) getContentPane();
        pnlCenter = new JPanel();
        pnlSouth = new JPanel();

        rows = new Vector();
        colHead = new Vector();

        btnPrint = new JButton("打印[P]");
        btnPrint.setMnemonic(KeyEvent.VK_P);
        btnExit = new JButton("退出[X]");
        btnExit.setMnemonic(KeyEvent.VK_X);

        // 添加组件
        panel.add(pnlSouth, BorderLayout.SOUTH);
        panel.add(pnlCenter, BorderLayout.CENTER);

        pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
        pnlSouth.add(btnPrint);
        pnlSouth.add(btnExit);
        pnlCenter.setLayout(new BorderLayout());

        TitledBorder tb = new TitledBorder("统计结果");
        pnlCenter.setBorder(tb);

        // 创建学生服务对象
        studentService = new StudentServiceImpl();
        // 获取按性别统计结果记录行集
        rows = studentService.findRowsByClass();
        // 设置表头
        colHead.add("班级");
        colHead.add("人数");

        // 创建表格(参数1:记录集;参数2:表头)
        table = new JTable(rows, colHead);
        scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        pnlCenter.add(scroller, BorderLayout.CENTER);

        repaint(); // 重绘窗体

        if (rows.isEmpty()) {
            JOptionPane.showMessageDialog(this, "没有记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        }

        // 设置窗口大小
        setSize(300, 200);
        // 设置窗口不可调整大小
        setResizable(false);
        // 设置窗口屏幕居中
        setLocationRelativeTo(null);
        // 设置窗口标题
        setTitle("按班级统计学生人数");
        // 设置窗口可见
        setVisible(true);
        // 设置窗口默认关闭操作(卸载当前窗口)
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        // 【退出】按钮单击事件
        btnExit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                dispose();
            }
        });

        // 【打印】按钮单击事件
        btnPrint.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    table.print();
                } catch (PrinterException e1) {
                    e1.printStackTrace();
                }
            }
        });
    }

    public static void main(String[] args) {
        new CountStudentsByClassFrame("");
    }
}

在这里插入图片描述

总结:
在删除方法中,方法都是一样的,只是方法名不一样,所以在打代码的时候也不要一直去死敲,也是要注意代码结构的,灵活运用!!!终于完成了图形界面的增删改查,非常有成就感!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值