实训第四天

创建程序类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;
/**

  • 功能:应用程序类
  •  存放全局数据
    
  • 作者:ygf
  • 日期:2019年6月20日
    /
    public class Application {
    /
    *
    • 登录用户标识符
      /
      public static int id;
      /
      *
    • 登录用户名
      /
      public static String username;
      /
      *
    • 登录用户密码
      /
      public static String password;
      /
      *
    • 登录窗口
      /
      public static LoginFrame loginFrame;
      /
      *
    • 主窗口
      /
      public static MainFrame mainFrame;
      /
      *
    • 注册窗口
      */
      public static RegisterFrame registerFrame;
      }
      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
      创建net.hw.student.gui包,在里面先创建三个界面类:LoginFrame、MainFrame与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;

    /**

    • 构造方法
    • @param title
      */
      public LoginFrame(String title) {
      super(title);
      initGUI();
      }

    /**

    • 初始化图形用户界面
      */
      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();
      }
      }

    /**

    • 主方法
    • @param args
      */
      public static void main(String[] args) {
      Application.loginFrame = new LoginFrame(“用户登录”);
      }
      }
      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
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      161
      162
      163
      164
      165
      166
      167
      168
      169
      170
      171
      172
      173
      174
      175
      176
      177
      178
      179
      180
      181
      182
      183
      184
      185
      186
      187
      188
      189
      190
      191
      192
      193
      194
      195
      196
      197
      198
      199
      200
      201
      202
      203
      204
      205
      206
      207
      208
      209
      210
      211
      212
      213
      214
      215
      216
      217
      218
      219
      220
      221
      222
      223
      224
      运行结果为:

用户注册窗口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;

    /**

    • 构造方法
    • @param title
      */
      public MainFrame(String title) {
      super(title);
      initGUI();
      }

    /**

    • 初始化图形用户界面
      */
      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;

    /**

    • 构造方法
    • @param title
      */
      public MainFrame(String title) {
      super(title);
      initGUI();
      }

    /**

    • 初始化图形用户界面
      */
      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
    运行结果为:

你可能感兴趣的:(实训第四天)