package net.tc.student.gui; import net.tc.student.app.Application; import net.tc.student.bean.Status; import net.tc.student.bean.User; import net.tc.student.service.StatusService; import net.tc.student.service.UserService; import net.tc.student.service.impl.StatusServiceImpl; import net.tc.student.service.impl.UserServiceImpl; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class LoginFrame extends JFrame { private String username; private String password; private JLabel lblUsername; private JLabel lblPassword; private JTextField txtUsername; private JPasswordField txtPassword; private JButton btnOK; private JButton btnCancel; private JButton btnRegister; private JPanel panel, panel1, panel2, panel3; // 构造方法 public LoginFrame(String title) { super(title); initGUI(); } private void initGUI() { // 设置窗口大小 setSize(500, 500); // 设置窗口屏幕居中 setLocationRelativeTo(null); // 设置窗口不可调整大小 setResizable(false); // 设置窗口可见 setVisible(true); // 实例化组件 panel = (JPanel) getContentPane(); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); lblUsername = new JLabel("用户名:"); lblPassword = new JLabel("密 码:"); txtUsername = new JTextField(15); txtPassword = new JPasswordField(15); btnOK = new JButton("确定[O]"); btnCancel = new JButton("取消[C]"); btnRegister = new JButton("注册[R]"); // 将控件添加到三个小面板 panel1.add(lblUsername); panel1.add(txtUsername); panel2.add(lblPassword); panel2.add(txtPassword); panel3.add(btnOK); panel3.add(btnCancel); panel3.add(btnRegister); // 设置主板为三行一列的网格布局 panel.setLayout(new GridLayout(3, 1)); // 添加到主板 panel.add(panel1); panel.add(panel2); panel.add(panel3); // 设置热剑字母 btnOK.setMnemonic(KeyEvent.VK_O); btnCancel.setMnemonic(KeyEvent.VK_C); btnRegister.setMnemonic(KeyEvent.VK_R); // 设置密码框会显示字符 txtPassword.setEchoChar('*'); // 设置窗口刚好容纳组件 pack(); // 设置窗口默认关闭操作 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // [确定]按钮点击事件 btnOK.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { login(); } }); // [确定]按钮处理事件 btnOK.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER) { login(); } } }); //[用户名]文本框按钮事件处理 txtUsername.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { // 判断是否按了回车 if (e.getKeyCode() == KeyEvent.VK_ENTER) { // 让密码文本框获取焦点 txtPassword.requestFocus(); } } }); // [密码]文本框按钮事件处理 txtPassword.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { // 判断 if (e.getKeyCode() == KeyEvent.VK_ENTER) { login(); } } }); // [取消]按钮点击事件处理 btnCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); // [注册]按钮点击事件 btnRegister.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 隐藏登录窗口 Application.loginFrame.setVisible(false); // 创建注册窗口 Application.registerFrame = new RegisterFrame("用户注册"); } }); } // 登录方法 private void login() { // 获取用户名 username = txtUsername.getText().trim(); // 获取密码 password = new String(txtPassword.getPassword()); // 创建用户服务对象 UserService userService = new UserServiceImpl(); // 调用登录方法,返回登录用户对象 User user = userService.login(username, password); // 判断登录用户是否为空,决定登录是否成功 if (user != null) { // 隐藏登录窗口 Application.loginFrame.setVisible(false); // 定义状态服务对象 StatusService statusService = new StatusServiceImpl(); // 获取状态对象 Status status = statusService.findStatusById(1); // 保存登录用户的信息 Application.id = user.getId(); Application.username = user.getUsername(); Application.password = user.getPassword(); // 提示用户登录成功 JOptionPane.showMessageDialog(null, "欢迎使用学生信息管理系统" + status.getVersion(), "用户登录", JOptionPane.INFORMATION_MESSAGE); // 显示系统主窗口 Application.mainFrame = new MainFrame(""); // 释放登录窗口 Application.loginFrame.dispose(); } else { // 隐藏登录窗口 Application.loginFrame.setVisible(false); // 提示用户登录失败,要重新输入用户名或密码 JOptionPane.showMessageDialog(null, "用户名或密码错误,请重新输入!", "用户登录", JOptionPane.ERROR_MESSAGE); // 显示登录窗口 Application.loginFrame.setVisible(true); // 用户名文本框内容全选 txtUsername.selectAll(); // 密码文本框内容全选 txtPassword.selectAll(); // 用户名文本框获取焦点 txtUsername.requestFocus(); } } // 主方法 public static void main(String[] args) { Application.loginFrame = new LoginFrame("用户登录"); } }
大一实训第六天制作GUI RegisterFrame
最新推荐文章于 2021-03-13 09:41:29 发布