当前位置: 首页 > news >正文

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);}});}
}

 

http://www.lryc.cn/news/572522.html

相关文章:

  • Github 热点项目 [特殊字符]PHP性能革命!FrankenPHP让Laravel/Symfony飞起来!
  • (哈希)128. 最长连续序列
  • 5G核心网周期性注册更新机制:信令流程与字段解析
  • Python 数据分析与可视化 Day 1 - Pandas 数据分析基础入门
  • 算法导论第十九章 并行算法:解锁计算新维度
  • 防火墙的禁用及开启
  • Stable Diffusion 实战-手机壁纸制作 第二篇:优化那些“崩脸”和“马赛克”问题,让图像更加完美!
  • ROS学习之动作通信
  • C#建立与数据库连接(版本问题的解决方案)踩坑总结
  • E结构体基础.go
  • 67、数据访问-crud实验-分页数据展示
  • ROS学习之服务通信
  • flink的多种部署模式
  • 【LLM学习笔记3】搭建基于chatgpt的问答系统(下)
  • 面试-操作系统
  • 【Dify 沙箱网络问题排查与解决】
  • 工程师生活:清除电热水壶(锅)水垢方法
  • 3DTiles三维模型
  • Python-循环结构解析
  • windows 11 安装和配置 WSL #1 Ubuntu
  • 30.all和any
  • 动态规划:01 背包(闫氏DP分析法)
  • python脚本间的相互调用
  • 磐基PaaS平台MongoDB组件SSPL许可证风险与合规性分析(上)
  • Git(三):分支管理
  • 达梦数据库锁超时问题
  • 使用Dagster资产工厂模式高效管理重复ETL任务
  • 识别网络延迟与带宽瓶颈
  • M1芯片macOS安装Xinference部署大模型
  • Datawhale 网络爬虫技术入门第2次笔记