swing综合案例.
1.实体类 User
package com.example.demo3;public class User {private int id;private String username;private String password;public User(int id, String username, String password) {this.id = id;this.username = username;this.password = password;}// Getters and Setterspublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
2.操作实体类UserService
package com.example.demo3;import java.util.ArrayList;
import java.util.List;import javax.swing.JOptionPane;public class UserService {private List<User> users = new ArrayList<>();//添加构造方法,初始化用户列表public UserService() {// 初始化一些测试用户users.add(new User(1, "admin", "123456"));users.add(new User(2, "user", "123456"));}// 添加用户public void addUser(User user) {users.add(user);}// 删除用户public void deleteUser(int id) {//如果id小于2,不允许删除if(id < 2) {JOptionPane.showMessageDialog(null, "系统管理员不允许删除");return;}users.removeIf(user -> user.getId() == id);}// 修改用户public void updateUser(User updatedUser) {for (int i = 0; i < users.size(); i++) {User user = users.get(i);if (user.getId() == updatedUser.getId()) {users.set(i, updatedUser);break;}}}// 获取所有用户public List<User> getAllUsers() {return users;}// 用户登录验证public boolean authenticate(String username, String password) {for (User user : users) {if (user.getUsername().equals(username) && user.getPassword().equals(password)) {return true;}}return false;}
}
3 界面登录:
package com.example.demo3;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class LoginFrame extends JFrame {private JTextField usernameField;private JPasswordField passwordField;private UserService userService;public LoginFrame(UserService userService) {this.userService = userService;setTitle("用户登录");setSize(400, 300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);// 使用更灵活的布局管理器setLayout(new GridBagLayout());GridBagConstraints gbc = new GridBagConstraints();gbc.insets = new Insets(5, 5, 5, 5);gbc.fill = GridBagConstraints.HORIZONTAL;// 设置背景色getContentPane().setBackground(new Color(240, 240, 240));// 设置字体Font labelFont = new Font("Microsoft YaHei", Font.PLAIN, 14);Font fieldFont = new Font("Microsoft YaHei", Font.PLAIN, 14);JLabel usernameLabel = new JLabel("用户名:");usernameLabel.setFont(labelFont);gbc.gridx = 0;gbc.gridy = 0;gbc.gridwidth = 1;add(usernameLabel, gbc);usernameField = new JTextField();usernameField.setFont(fieldFont);gbc.gridx = 1;gbc.gridy = 0;gbc.gridwidth = 2;add(usernameField, gbc);JLabel passwordLabel = new JLabel("密码:");passwordLabel.setFont(labelFont);gbc.gridx = 0;gbc.gridy = 1;gbc.gridwidth = 1;add(passwordLabel, gbc);passwordField = new JPasswordField();passwordField.setFont(fieldFont);gbc.gridx = 1;gbc.gridy = 1;gbc.gridwidth = 2;add(passwordField, gbc);JButton loginButton = new JButton("登录");loginButton.setFont(new Font("Microsoft YaHei", Font.BOLD, 14));loginButton.setBackground(new Color(0, 128, 255));loginButton.setForeground(Color.WHITE);loginButton.setFocusPainted(false);gbc.gridx = 1;gbc.gridy = 2;gbc.gridwidth = 1;gbc.anchor = GridBagConstraints.CENTER;add(loginButton, gbc);loginButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String username = usernameField.getText();String password = new String(passwordField.getPassword());if (userService.authenticate(username, password)) {JOptionPane.showMessageDialog(LoginFrame.this, "登录成功!");new UserManagementFrame(userService).setVisible(true);LoginFrame.this.dispose();} else {JOptionPane.showMessageDialog(LoginFrame.this, "用户名或密码错误!");}}});}
}
4 主界面:
package com.example.demo3;import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;public class UserManagementFrame extends JFrame {private UserService userService;private JTable userTable;private DefaultTableModel tableModel;public UserManagementFrame(UserService userService) {this.userService = userService;setTitle("用户管理");setSize(800, 600);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);setLayout(new BorderLayout());// 初始化表格String[] columnNames = {"ID", "用户名", "密码"};tableModel = new DefaultTableModel(columnNames, 0);userTable = new JTable(tableModel);JScrollPane scrollPane = new JScrollPane(userTable);add(scrollPane, BorderLayout.CENTER);// 初始化按钮面板JPanel buttonPanel = new JPanel();JButton addButton = new JButton("新增用户");JButton editButton = new JButton("修改用户");JButton deleteButton = new JButton("删除用户");buttonPanel.add(addButton);buttonPanel.add(editButton);buttonPanel.add(deleteButton);add(buttonPanel, BorderLayout.SOUTH);// 填充表格数据refreshTable();// 新增用户按钮事件addButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String username = JOptionPane.showInputDialog(UserManagementFrame.this, "请输入用户名:");String password = JOptionPane.showInputDialog(UserManagementFrame.this, "请输入密码:");if (username != null && password != null) {int id = userService.getAllUsers().size() + 1;User newUser = new User(id, username, password);userService.addUser(newUser);refreshTable();}}});// 修改用户按钮事件editButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int selectedRow = userTable.getSelectedRow();if (selectedRow != -1) {int id = (int) tableModel.getValueAt(selectedRow, 0);String username = JOptionPane.showInputDialog(UserManagementFrame.this, "请输入新的用户名:", tableModel.getValueAt(selectedRow, 1));String password = JOptionPane.showInputDialog(UserManagementFrame.this, "请输入新的密码:", tableModel.getValueAt(selectedRow, 2));if (username != null && password != null) {User updatedUser = new User(id, username, password);userService.updateUser(updatedUser);refreshTable();}} else {JOptionPane.showMessageDialog(UserManagementFrame.this, "请选择要修改的用户!");}}});// 删除用户按钮事件deleteButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int selectedRow = userTable.getSelectedRow();if (selectedRow != -1) {int id = (int) tableModel.getValueAt(selectedRow, 0);int confirm = JOptionPane.showConfirmDialog(UserManagementFrame.this, "确定要删除该用户吗?", "确认删除", JOptionPane.YES_NO_OPTION);if (confirm == JOptionPane.YES_OPTION) {userService.deleteUser(id);refreshTable();}} else {JOptionPane.showMessageDialog(UserManagementFrame.this, "请选择要删除的用户!");}}});}private void refreshTable() {tableModel.setRowCount(0);List<User> users = userService.getAllUsers();for (User user : users) {Object[] row = {user.getId(), user.getUsername(), user.getPassword()};tableModel.addRow(row);}}
}
5.程序入口Main
package com.example.demo3;public class Main {public static void main(String[] args) {UserService userService = new UserService();javax.swing.SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new LoginFrame(userService).setVisible(true);}});}
}