创建程序类Application
package net.xmh.student.bean.app;
import net.xmh.student.gui.LoginFrame;
import net.xmh.student.gui.MainFrame;
import net.xmh.student.gui.RegisterFrame;
/**
存放全局数据
LoginFrame
package net.xmh.student.gui;
import net.xmh.student.bean.app.Application;
import net.xmh.student.bean.Status;
import net.xmh.student.bean.User;
import net.xmh.student.service.StatusService;
import net.xmh.student.service.UserService;
import net.xmh.student.service.impl.StatusServiceImpl;
import net.xmh.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;
/**
功能:登录窗口
作者:ygf
日期:2019年6月20日
*/
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;
/**
/**
初始化图形用户界面
*/
private void initGUI() {
// 实例化组件(面板与控件)
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(’*’);
// 设置窗口大小
setSize(250, 200);
// 设置窗口屏幕居中
setLocationRelativeTo(null);
// 设置窗口不可调整大小
setResizable(false);
// 设置窗口刚好容纳组件
pack();
// 设置窗口可见
setVisible(true);
// 设置窗口默认关闭操作
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();
}
}
});
// 【注册】按钮单击事件处理
btnRegister.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 隐藏登录窗口
Application.loginFrame.setVisible(false);
// 创建注册窗口
Application.registerFrame = new RegisterFrame(“用户注册”);
}
});
// 【密码】文本框按键事件处理
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);
}
});
}
/**
登录方法
*/
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.getUsernname();
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();
}
}
/**
用户注册窗口RegisterFrame
package net.xmh.student.gui;
import net.xmh.student.bean.app.Application;
import net.xmh.student.bean.Status;
import net.xmh.student.service.StatusService;
import net.xmh.student.service.impl.StatusServiceImpl;
import org.junit.Test;
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
功能:主界面窗口
通过菜单系统
调用各个功能模块
作者:ygf
日期:2019年6月20日
*/
public class MainFrame extends JFrame {
private static Status status;
private StatusService statusService;
/**
/**
初始化图形用户界面
*/
private void initGUI() {
// 创建状态服务对象
statusService = new StatusServiceImpl();
// 获取状态对象
status = statusService.findStatusById(1);
// 设置窗口尺寸
setSize(800, 640);
// 设置窗口可见
setVisible(true);
// 设置窗口屏幕居中
setLocationRelativeTo(null);
//设置窗口标题
setTitle(“学生管理系统”);
// 关闭窗口单击事件
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
exitSystem();
}
});
}
/**
退出系统
*/
protected void exitSystem() {
int choice = JOptionPane.showConfirmDialog(null, “你是否要退出系统?”, “学生信息管理系统”, JOptionPane.YES_NO_OPTION);
if (choice == JOptionPane.YES_OPTION) {
System.exit(0);
} else {
// 卸载当前窗口
dispose();
//重新显示窗口
Application.mainFrame = new MainFrame(“学生信息管理系统” + status.getVersion());
//注册窗口监听器,继承窗口适配器,编写事件处理方法
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e){
exitSystem();
}
});
}
}
/**
主方法
@param args
/
public static void main(String[] args) {
StatusService statusService = new StatusServiceImpl();
status = statusService.findStatusById(1);
Application.mainFrame = new MainFrame(“学生信息管理系统” + status.getVersion());
}
/*
*/
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
运行结果为:
用户登录窗口MainFrame
package net.xmh.student.gui;
import net.xmh.student.bean.app.Application;
import net.xmh.student.bean.Status;
import net.xmh.student.service.StatusService;
import net.xmh.student.service.impl.StatusServiceImpl;
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
功能:主界面窗口
通过菜单系统
调用各个功能模块
作者:ygf
日期:2019年6月20日
*/
public class MainFrame extends JFrame {
private static Status status;
private StatusService statusService;
/**
/**
初始化图形用户界面
*/
private void initGUI() {
// 创建状态服务对象
statusService = new StatusServiceImpl();
// 获取状态对象
status = statusService.findStatusById(1);
// 设置窗口尺寸
setSize(800, 640);
// 设置窗口可见
setVisible(true);
// 设置窗口屏幕居中
setLocationRelativeTo(null);
//设置窗口标题
setTitle(“学生管理系统”);
// 关闭窗口单击事件
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
exitSystem();
}
});
}
/**
退出系统
*/
protected void exitSystem() {
int choice = JOptionPane.showConfirmDialog(null, “你是否要退出系统?”, “学生信息管理系统”, JOptionPane.YES_NO_OPTION);
if (choice == JOptionPane.YES_OPTION) {
System.exit(0);
} else {
// 卸载当前窗口
dispose();
//重新显示窗口
Application.mainFrame = new MainFrame(“学生信息管理系统” + status.getVersion());
//注册窗口监听器,继承窗口适配器,编写事件处理方法
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e){
exitSystem();
}
});
}
}
/**
主方法
@param args
/
public static void main(String[] args) {
StatusService statusService = new StatusServiceImpl();
status = statusService.findStatusById(1);
Application.mainFrame = new MainFrame(“学生信息管理系统” + status.getVersion());
}
/*
*/
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
运行结果为: