package com.WR.StudentMS.view; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.util.List; import java.util.stream.Collectors; import com.WR.StudentMS.model.Classmqsy; import com.WR.StudentMS.model.ZhuanyeWR; import com.WR.StudentMS.dao.mysql.Classmdaoimpqsy; public class ClassmPanel extends JPanel { private List classmList; private Classmdaoimpqsy classmDao; private JTable table; private DefaultTableModel model; private JTextField searchField; private JButton searchButton; public ClassmPanel() { super(new BorderLayout()); // 使用BorderLayout布局管理器 classmDao = new Classmdaoimpqsy(); model = new DefaultTableModel(); initializeUI(); loadClass(); } private void initializeUI() { // 定义列名 String[] columnNames = {"班级ID", "班级名", "专业ID"}; model.setColumnIdentifiers(columnNames); table = new JTable(model); JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); // 创建按钮面板 JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new FlowLayout()); // 添加按钮 JButton addButton = new JButton("添加班级信息"); JButton deleteButton = new JButton("删除选中的班级信息"); // 创建搜索框和搜索按钮 searchField = new JTextField(); searchField.setPreferredSize(new Dimension(200, searchField.getPreferredSize().height)); searchButton = new JButton("班级ID查询"); // 为按钮添加事件监听器 addButton.addActionListener(e -> addClass()); deleteButton.addActionListener(e -> deleteSelectedClass()); searchButton.addActionListener(e -> searchClasses()); // 将按钮添加到面板 buttonPanel.add(addButton); buttonPanel.add(deleteButton); buttonPanel.add(searchField); buttonPanel.add(searchButton); // 添加搜索按钮到面板 // 将按钮面板添加到底部 add(buttonPanel, BorderLayout.SOUTH); } private void loadClass() { // 从数据库加载学籍信息并更新表格 classmList = classmDao.findAllqsy(); model.setRowCount(0); // 清空表格 for (Classmqsy classm : classmList) { Object[] rowData = new Object[]{ classm.getClassidqsy(), classm.getClassnameqsy(), classm.getMajoridqsy(), }; model.addRow(rowData); } } private void addClass() { String input = (String) JOptionPane.showInputDialog( this, "请输入班级信息(格式:班级ID-班级名-专业ID):", "添加班级信息", JOptionPane.QUESTION_MESSAGE, null, null, null ); if (input != null && !input.trim().isEmpty()) { String[] parts = input.split("-", 3); // 按"-"分割字符串,最多3部分 if (parts.length == 3) { try { Classmqsy newClassm = new Classmqsy(); newClassm.setClassidqsy(parts[0].trim()); newClassm.setClassnameqsy(parts[1].trim()); newClassm.setMajoridqsy(parts[2].trim()); // 调用数据库添加班级信息的方法 int result = classmDao.createqsy(newClassm); // 确保在EDT上更新UI和显示消息 SwingUtilities.invokeLater(new Runnable() { @Override public void run() { if (result > 0) { // 刷新班级列表 loadClass(); JOptionPane.showMessageDialog(ClassmPanel.this, "班级信息添加成功!"); } else { // 显示添加失败的消息 JOptionPane.showMessageDialog(ClassmPanel.this, "班级信息添加失败!"); } } }); } catch (NumberFormatException e) { // 专业ID格式错误 JOptionPane.showMessageDialog(this, "专业ID必须是整数!"); } catch (Exception e) { // 其他异常情况 JOptionPane.showMessageDialog(this, "添加班级信息失败: " + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE); } } else { // 输入格式不正确 JOptionPane.showMessageDialog(this, "输入格式不正确,需要班级ID-班级名-专业ID!"); } } } private void deleteSelectedClass() { int selectedRow = table.getSelectedRow(); if (selectedRow >= 0) { String classmId = (String) model.getValueAt(selectedRow, 0); Classmqsy classmToDelete = classmDao.findByClassId(classmId); if (classmToDelete != null) { int result = classmDao.removeqsy(classmToDelete); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { if (result > 0) { model.removeRow(selectedRow); // 从表格中移除 JOptionPane.showMessageDialog(ClassmPanel.this, "班级信息删除成功!"); } else { JOptionPane.showMessageDialog(ClassmPanel.this, "班级信息删除失败,可能班级ID不存在或删除记录未受影响!"); } } }); } else { JOptionPane.showMessageDialog(this, "未找到对应的班级信息!"); } } } private void searchClasses() { String searchQuery = searchField.getText(); if (!searchQuery.trim().isEmpty()) { // 过滤班级列表,仅根据班级ID进行搜索 List filteredList = classmList.stream() .filter(classm -> classm.getClassidqsy().equals(searchQuery)) // 仅根据班级ID过滤 .collect(Collectors.toList()); // 更新表格模型以显示过滤后的班级信息 model.setRowCount(0); // 清空表格 for (Classmqsy classm : filteredList) { Object[] rowData = new Object[]{ classm.getClassidqsy(), classm.getClassnameqsy(), classm.getMajoridqsy() }; model.addRow(rowData); } } else { // 如果搜索框为空,则重新加载所有班级信息 loadClass(); } } }