Java实战之图书管理系统(swing版)(3)——登录界面及功能实现

首先创建一个普通的Java项目,然后按照下图创建文件夹和文件:

其中tools包下的两个类可以直接导入使用,如果有兴趣可以去关注看下,如果没有兴趣,直接使用即可。

在view包下创建一个名为LogupFrame.java的文件,该类是登录界面类,主要处理登录功能。

代码如下:

package bookManageSystem.view;
​
import bookManageSystem.tools.ComponentTools;
import bookManageSystem.tools.SimpleTools;
​
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
​
public class LogupFrame extends JFrame implements ActionListener {
    private SimpleTools simpleTools = new SimpleTools();
    private ComponentTools componentTools = new ComponentTools();
    private JPanel panel;
    private Box totalVBox, systemLabelBox, usernameBox, passwordBox, buttonBox;
    private JLabel systemLabel, usernameLabel, passwordLabel;
    private JTextField usernameTextField;
    private JPasswordField passwordField;
    private JButton logupButton, resetButton;
​
    public LogupFrame() {
        this.setTitle("登录");
        this.setBounds(400, 400, 600, 500);
​
        this.setContentPane(this.createLogupPane());
​
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(false);
​
        // 为按钮注册事件
        logupButton.addActionListener(this);
        resetButton.addActionListener(this);
    }
​
    public JPanel createLogupPane() {
        panel = new JPanel();
        totalVBox = Box.createVerticalBox();
​
        systemLabelBox = Box.createHorizontalBox();
        systemLabel = new JLabel("图书管理系统");
        systemLabel.setFont(new Font("微软雅黑", Font.BOLD, 40));
        systemLabelBox.add(systemLabel);
​
        usernameBox = Box.createHorizontalBox();
        usernameLabel = new JLabel("用户名:");
        usernameTextField = new JTextField(20);
        usernameBox.add(usernameLabel);
        usernameBox.add(Box.createHorizontalStrut(20));
        usernameBox.add(usernameTextField);
​
        passwordBox = Box.createHorizontalBox();
        passwordLabel = new JLabel("密    码:");
        passwordField = new JPasswordField(20);
        passwordBox.add(passwordLabel);
        passwordBox.add(Box.createHorizontalStrut(20));
        passwordBox.add(passwordField);
​
        buttonBox = Box.createHorizontalBox();
        logupButton = new JButton("登录");
        resetButton = new JButton("重置");
        buttonBox.add(logupButton);
        buttonBox.add(Box.createHorizontalStrut(80));
        buttonBox.add(resetButton);
​
        totalVBox.add(systemLabelBox);
        totalVBox.add(Box.createVerticalStrut(80));
        totalVBox.add(usernameBox);
        totalVBox.add(Box.createVerticalStrut(80));
        totalVBox.add(passwordBox);
        totalVBox.add(Box.createVerticalStrut(80));
        totalVBox.add(buttonBox);
​
        panel.add(totalVBox);
​
        // 为标签设置图标
        new ComponentTools().setIcons(new JLabel[]{systemLabel, usernameLabel, passwordLabel}, new String[]{"src/bookManageSystem/images/logo.png", "src/bookManageSystem/images/userName.png", "src" + "/bookManageSystem/images/password.png"});
        // 为按钮设置图标
        new ComponentTools().setIcons(new JButton[]{logupButton, resetButton}, new String[]{"src/bookManageSystem/images/login.png", "src/bookManageSystem/images/reset.png"});
        return panel;
    }
​
    @Override
    public void actionPerformed(ActionEvent e) {
        // 登录按钮的事件处理
        if (e.getSource() == logupButton) {
            // 判断输入框是否为空并做处理
            if (simpleTools.isEmpty(usernameTextField.getText()) && simpleTools.isEmpty(passwordField.getText())) {
                // 登录账户,这里没有调用数据库,而是使用默认唯一账户:(用户名:张三;密码:123456)
                if (usernameTextField.getText().equals("张三") && passwordField.getText().equals("123456")) {
                    // 弹出提示框进行登录成功的提示
                    int isOK = JOptionPane.showConfirmDialog(null, "恭喜您,登录成功!");
                    // 如果用户点击了提示框中的确认按钮则进行下一步操作
                    if (isOK == JOptionPane.OK_OPTION) {
                        // 重置输入框内容
                        componentTools.reset(usernameTextField, passwordField);
                        // 当登录成功后,跳转到主界面,在此时不可取消注释,因为并没有创建主界面故会报错
                        // new MainFrame().setVisible(true);
                        // 登录成功后同时使登录界面不可见(即消失)
                        this.setVisible(false);
                    } else {
                        return;
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "对不起,登录失败!");
                }
            } else {
                JOptionPane.showMessageDialog(null, "不能为空!");
            }
        }
        // 重置按钮的事件处理
        if (e.getSource() == resetButton) {
            // 将输入框的内容置为空
            componentTools.reset(usernameTextField, passwordField);
        }
    }
​
}
​

可以在该类中写一个main方法测试运行。

不过我们不在LogupFrame.java运行程序,而是在Main.java中运行主方法,其代码如下:

package bookManageSystem;
​
import bookManageSystem.tools.SimpleTools;
import bookManageSystem.view.LogupFrame;
​
import java.awt.*;
​
public class Main {
​
    public static void main(String[] args) {
        // 设置全局字体
        new SimpleTools().initGlobalFont(new Font("微软雅黑", Font.PLAIN, 16));
        // 首页界面即登录界面
        new LogupFrame().setVisible(true);
    }
}

运行项目,效果如下图:

可以输入唯一成功用户(用户名:张三;密码:123456)进行登录,也可以自己在代码中设置可以登录成功的账号。

点击登录按钮后如果用户名和密码都正确则会弹出登录成功的提示框:

如果用户名或密码不正确也会弹出相应的提示框:

在登录成功后的提示框中,如果点击”是(Y)“按钮则整个窗口会消失不见,因为并没有创建登录成功后的主界面类,如果点击的是”否(N)”或“取消”按钮,则继续停留在登录界面等待用户进一步的操作。

 

可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。

注意:在公众号后台回复【20200128】可获取本节的源码。

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值