package com.example; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.ResultSet; import java.sql.SQLException; public class UserManagement extends JFrame implements ActionListener { JMenuBar menuBar; JMenuItem addItem, deleteItem, updateItem, refreshItem; private JTable table; private DefaultTableModel tableModel; public UserManagement() { super("用户信息管理"); // 菜单栏 menuBar = new JMenuBar(); setJMenuBar(menuBar); addItem = new JMenuItem("添加用户"); deleteItem = new JMenuItem("删除用户"); updateItem = new JMenuItem("修改用户"); refreshItem = new JMenuItem("刷新数据"); menuBar.add(addItem); menuBar.add(deleteItem); menuBar.add(updateItem); menuBar.add(refreshItem); addItem.addActionListener(this); deleteItem.addActionListener(this); updateItem.addActionListener(this); refreshItem.addActionListener(this); // 表格模型 String[] columnNames = {"用户名", "密码", "身份"}; tableModel = new DefaultTableModel(columnNames, 0) { @Override public boolean isCellEditable(int row, int column) { return false; // 不直接在表格里改 } }; table = new JTable(tableModel); JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); setSize(600, 400); setLocationRelativeTo(null); // 初始加载 loadData(); setVisible(true); } // 加载 identity=user 的数据 private void loadData() { Jdbc jdbc = new Jdbc(); try { ResultSet rs = jdbc.query("SELECT username,password,identity FROM user WHERE identity='user'"); tableModel.setRowCount(0); while (rs.next()) { Object[] row = { rs.getString("username"), rs.getString("password"), rs.getString("identity") }; tableModel.addRow(row); } rs.close(); jdbc.close(); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(this, "加载数据失败: " + e.getMessage()); } } @Override public void actionPerformed(ActionEvent e) { // 添加用户 if (e.getSource() == addItem) { JFrame frame = new JFrame("添加用户"); frame.setLayout(new GridLayout(5, 2)); JLabel nameLabel = new JLabel("用户名:"); JTextField nameField = new JTextField(); JLabel passLabel = new JLabel("密码:"); JPasswordField passField = new JPasswordField(); JButton addButton = new JButton("添加"); JButton cancelButton = new JButton("取消"); frame.add(nameLabel); frame.add(nameField); frame.add(passLabel); frame.add(passField); frame.add(addButton); frame.add(cancelButton); addButton.addActionListener(ev -> { String username = nameField.getText(); String password = passField.getText(); Jdbc jdbc = new Jdbc(); try { jdbc.update("INSERT INTO user (username,password,email,phone,identity) VALUES ('" + username + "','" + password + "','user')"); jdbc.close(); loadData(); frame.dispose(); } catch (SQLException ex) { JOptionPane.showMessageDialog(frame, "添加失败: " + ex.getMessage()); } }); cancelButton.addActionListener(ev -> frame.dispose()); frame.setSize(400, 250); frame.setLocationRelativeTo(null); frame.setVisible(true); } // 删除用户 else if (e.getSource() == deleteItem) { int row = table.getSelectedRow(); if (row == -1) { JOptionPane.showMessageDialog(this, "请先选择要删除的用户!"); return; } String username = (String) tableModel.getValueAt(row, 0); int confirm = JOptionPane.showConfirmDialog(this, "确定删除用户: " + username + " ?", "确认", JOptionPane.YES_NO_OPTION); if (confirm == JOptionPane.YES_OPTION) { Jdbc jdbc = new Jdbc(); try { jdbc.update("DELETE FROM user WHERE username='" + username + "'"); jdbc.close(); loadData(); } catch (SQLException ex) { JOptionPane.showMessageDialog(this, "删除失败: " + ex.getMessage()); } } } // 修改用户(选中一行后弹窗修改) else if (e.getSource() == updateItem) { int row = table.getSelectedRow(); if (row == -1) { JOptionPane.showMessageDialog(this, "请先选择要修改的用户!"); return; } String oldUsername = (String) tableModel.getValueAt(row, 0); JFrame frame = new JFrame("修改用户"); frame.setLayout(new GridLayout(5, 2)); JTextField nameField = new JTextField((String) tableModel.getValueAt(row, 0)); JTextField passField = new JTextField((String) tableModel.getValueAt(row, 1)); JTextField emailField = new JTextField((String) tableModel.getValueAt(row, 2)); JTextField phoneField = new JTextField((String) tableModel.getValueAt(row, 3)); JButton saveButton = new JButton("保存"); JButton cancelButton = new JButton("取消"); frame.add(new JLabel("用户名:")); frame.add(nameField); frame.add(new JLabel("密码:")); frame.add(passField); frame.add(new JLabel("邮箱:")); frame.add(emailField); frame.add(new JLabel("电话:")); frame.add(phoneField); frame.add(saveButton); frame.add(cancelButton); saveButton.addActionListener(ev -> { String username = nameField.getText(); String password = passField.getText(); String email = emailField.getText(); String phone = phoneField.getText(); Jdbc jdbc = new Jdbc(); try { jdbc.update("UPDATE user SET username='" + username + "', password='" + password + "', email='" + email + "', phone='" + phone + "' WHERE username='" + oldUsername + "'"); jdbc.close(); loadData(); frame.dispose(); } catch (SQLException ex) { JOptionPane.showMessageDialog(frame, "修改失败: " + ex.getMessage()); } }); cancelButton.addActionListener(ev -> frame.dispose()); frame.setSize(400, 250); frame.setLocationRelativeTo(null); frame.setVisible(true); } // 刷新数据 else if (e.getSource() == refreshItem) { loadData(); } } public static void main(String[] args) { new UserManagement(); } }