Java实训日志07

该文章详细介绍了Java项目开发中的步骤,包括创建应用程序类和窗口界面类。在应用程序类中,创建了app和gui子包,以及Application类。窗口界面方面,重点讲述了主界面窗口MainFrame、登录窗口LoginFrame和注册窗口RegisterFrame的创建,包括各个窗口的构造、图形用户界面的初始化以及事件处理方法的编写。文章还提出了程序改进建议,如用户名和密码的非空校验,并预告了设置学校信息窗口SetCollegeInfoFrame的创建。
摘要由CSDN通过智能技术生成

八、项目开发实现步骤

(十)创建应用程序类

  • 创建窗口界面类

1、创建app子包

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

2、创建Application类

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

  • 此时在net.zhong.student根包里创建gui子包(gui: graphical)

(十一)创建窗口界面类

1、创建主界面窗口

  • 我们先来做一个空白的主界面窗口
  • 继承JFrame类
    在这里插入图片描述
  • 在net.zhong.student.gui包包里已经创建三个类LoginFrame、RegisterFrame和MainFrame
    请添加图片描述

2、创建主界面窗口MainFrame

  • MainFrame继承JFrame类
    请添加图片描述
  • 添加构造方法(有一个标题参数的构造方法)
    请添加图片描述
  • 在类的声明部分声明两个变量:状态服务变量与状态变量
    请添加图片描述
  • 创建初始化图形用户界面方法initGUI()
    请添加图片描述
  • 在构造方法里调用初始化图形用户界面方法initGUI()
    请添加图片描述
  • 编写主方法代码,实例化主窗口,设置空标题,保存到Application的变量mainFrame里
    请添加图片描述
  • 如果希望单击关闭按钮后,弹出一个询问框,询问用户是否要退出系统,那么就不用采用上述方法,而应该采用注册窗口监听器的方法,通过编写事件处理方法来弹出询问对话框。
    请添加图片描述
  • 运行程序,查看结果
    请添加图片描述

请添加图片描述

3、创建用户登录窗口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

  • 在创建用户登录窗口过程中,已经创建了一个可以显示与关闭的空白注册窗口
    请添加图片描述
  • 单参构造方法
    请添加图片描述
  • 初始化图形用户界面方法
    请添加图片描述
  • 主方法
    请添加图片描述
  • 声明变量
    请添加图片描述
  • 创建组件(面板与控件)
    请添加图片描述
  • 将控件添加到四个小面板
    请添加图片描述
  • 置大面板布局,将四个小面板添加到大面板
    请添加图片描述
  • 设置窗口刚好容纳组件
    请添加图片描述
  • 在initGUI()方法里编写【提交】按钮事件处理代码
    请添加图片描述
  • 编写注册方法register()
private void register() {                                                                        
    // 获取用户名                                                                                     
    username = txtUsername.getText().trim();                                                     
    // 获取密码                                                                                      
    password = new String(txtPassword.getPassword());                                            
    // 获取电话                                                                                      
    telephone = txtTelephone.getText().trim();                                                   
    // 定义当前时间为注册时间                                                                               
    registerTime = new Timestamp(System.currentTimeMillis());                                    
                                                                                                 
    // 对用户名进行非空校验                                                                                
    if (username.equals("")) {                                                                   
        JOptionPane.showMessageDialog(null, "用户名不能为空!",                                          
                "学生信息管理系统", JOptionPane.WARNING_MESSAGE);                                        
        txtUsername.requestFocus();                                                              
        return;                                                                                  
    }                                                                                            
                                                                                                 
    // 对密码进行非空校验                                                                                 
    if (password.equals("")) {                                                                
        JOptionPane.showMessageDialog(null, "密码不能为空!",                                           
                "学生信息管理系统", JOptionPane.WARNING_MESSAGE);                                        
        txtPassword.requestFocus();                                                              
        return;                                                                                  
    }                                                                                            
                                                                                                 
    // 定义用户服务对象                                                                                  
    UserService userService = new UserServiceImpl();                                             
    // 创建用户                                                                                      
    User user = new User();                                                                      
    user.setUsername(username);                                                                  
    user.setPassword(password);                                                                  
    user.setTelephone(telephone);                                                                
    user.setRegisterTime(registerTime);                                                          
                                                                                                 
    // 添加用户                                                                                      
    int count = userService.addUser(user);                                                       
                                                                                                 
    // 判断是否添加成功                                                                                  
    if (count > 0) {                                                                             
        setVisible(false);                                                                       
        JOptionPane.showMessageDialog(null, "恭喜!注册成功!",                                          
                "学生信息管理系统", JOptionPane.INFORMATION_MESSAGE);                                    
        setVisible(true);                                                                        
    } else {                                                                                     
        JOptionPane.showMessageDialog(null, "遗憾!注册失败!",                                          
                "学生信息管理系统", JOptionPane.INFORMATION_MESSAGE);                                    
    }                                                                                            
}
  • 在initGUI()方法里编写【取消】按钮单击事件处理代码
    请添加图片描述
  • 在initGUI()方法里编写【登录】按钮单击事件处理代码
    请添加图片描述
  • 在initGUI()方法里编写【用户名】文本框按键事件处理代码
    请添加图片描述
  • 在initGUI()方法里编写【密码】文本框按键事件处理代码
    请添加图片描述
  • 在initGUI()方法里编写【电话】文本框按键事件处理代码
    请添加图片描述
  • 先启动登录窗口,单击【注册】按钮,跳转到注册窗口,注册一个新用户,然后以新用户登录系统。
    请添加图片描述
  • 利用注册窗口,我们注册一个名叫“无心剑”的新用户,然后利用“无心剑”登录系统,测试取得成功。
  • 注册窗口完整代码
    在这里插入图片描述

程序改进建议

注意注册窗口程序存在不完善之处:用户名和密码为空时也能注册成功。为了让注册窗口程序更加完善,同学们自行修改实训讲义给出的参考代码,针对上述情况给用户弹出相应的警告消息,保证用户名与密码非空时才能注册新用户(非空校验)。

4、创建设置学校信息窗口SetCollegeInfoFrame

  • 在net.zhong.student.gui包里创建SetCollegeInfoFrame类
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值