Java实训day07

八、项目开发实现步骤

(十)创建应用程序类

  • ● 创建应用程序类,存在全局数据,所有的窗口界面都可以共享应用程序类里存放的数据。

1、创建app子包

  • 在net.liulixiang.student包里创建app子包
    在这里插入图片描述

2、创建Application类

  • 在net.liulixiang.student.app包里创建Application类
    在这里插入图片描述
package net.liulixiang.student.app;

/**
 * 功能:应用程序类,存放全局数据
 * 作者:刘丽香
 * 日期:2023年06月16日
 */
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; // 注册窗口

}

  • 此时,三个窗口界面类还未创建,因此程序会报错:无法解析符号。
    在这里插入图片描述
  • 在net.liulixiang.student根包里创建gui子包(gui: graphical user interface - 图形用户界面),在里面创建三个类:LoginFrame、MainFrame与RegisterFrame。
    在这里插入图片描述
  • 此时,Applicaiton类就不会报错了
    在这里插入图片描述

(十一)创建窗口界面类

1、创建主界面窗口

(1)先来做一个空白的主界面窗口
  • 继承JFrame类
    在这里插入图片描述

  • 添加构造方法(带标题参数的构造方法)
    在这里插入图片描述

  • 声明状态服务变量
    在这里插入图片描述

  • 创建初始化图形用户界面方法 - initGUI()
    在这里插入图片描述

  • 在构造方法里调用initGUI()方法
    在这里插入图片描述

  • 编写主方法,实例化主窗口
    在这里插入图片描述

  • 运行程序,查看结果,窗口启动时屏幕居中
    在这里插入图片描述

  • 单击主窗口关闭按钮,窗口是关闭了,但程序仍在运行
    在这里插入图片描述

  • 修改一下initGUI()方法
    在这里插入图片描述

  • 运行程序,查看结果

在这里插入图片描述

(2)退出时弹出消息框询问用户
  • 如果希望单击关闭按钮后,弹出一个询问框,询问用户是否要退出系统,那么就不用采用上述方法,而应该采用注册窗口监听器的方法,通过编写事件处理方法来弹出询问对话框。
    在这里插入图片描述
  • 注册窗口监听器,创建窗口适配器,编写事件处理代码
    在这里插入图片描述
  • 运行程序,查看结果
    在这里插入图片描述

2、创建用户登录窗口LoginFrame

  • 继承JFrame,创建LoginFrame
    在这里插入图片描述
  • 创建初始化图形用户界面方法
    在这里插入图片描述
  • 添加单参构造方法
    在这里插入图片描述
  • 添加主方法,实例化用户登录窗口
    在这里插入图片描述
  • 运行程序,查看结果
    在这里插入图片描述
  • 空白的用户登录窗口,不能调整大小
    在这里插入图片描述
  • 声明用户登录窗口所需变量
    在这里插入图片描述
  • 实例化组件
    在这里插入图片描述
  • 将控件添加到小面板,然后将小面板添加到主面板
    在这里插入图片描述
  • 设置按钮热键字母,以及密码框的回显字符
    在这里插入图片描述
  • 运行程序,查看效果
    在这里插入图片描述
  • 行间距太大,界面显得不紧凑,怎么设置窗口属性,才能让界面紧凑好看呢?很简单,调用窗口的pack()方法即可。
    在这里插入图片描述
  • 运行程序,查看效果
    在这里插入图片描述
  • 单击【确定】按钮,或当焦点落在【确定】按钮时按回车键,都会调用登录方法login()。
    在这里插入图片描述
  • 编写用户登录方法login()
/**                                                                        
 * 登录方法                                                                    
 */                                                                        
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();                                        
    }                                                                      
  • 运行程序,查看效果
    在这里插入图片描述

  • 输入用户名之后,敲回车让光标跳到密码文本框,就应该编写一个用户名文本框的按键事件
    在这里插入图片描述

  • 编写【密码】文本框按键事件处理代码(敲回车后执行登录方法)
    在这里插入图片描述

  • 编写【取消】按钮单击事件处理代码
    在这里插入图片描述

  • 编写【注册】按钮单击事件处理代码
    在这里插入图片描述

  • 此时,需要修改用户注册窗口RegisterFrame,继承JFrame,添加单参构造方法,初始化图形用户界面方法,主方法

运行程序,查看效果
在这里插入图片描述

  • 再查看用户登录窗口【注册】按钮单击事件处理代码,就没有错误了。
    在这里插入图片描述
  • 运行程序,查看效果
    在这里插入图片描述
  • 登录窗口完整代码
    在这里插入图片描述

3、创建用户注册窗口RegisterFrame

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值