GUI模拟登录界面

186 阅读4分钟
  • GUI(图形化界面编程)
  • GUI编程要使用组件,库里面已经定义好了,找到这个组件,并且去创建它的对象,显示出来就可以了
  • javax.swing包(可视化组件):窗体、按钮、文本框、图片
  • java.awt包(元素组件):布局管理器,设置颜色时用到的颜色类,画笔
  • 窗体是最顶级的容器,这些组件都依赖于窗体,这些组件如果没有放到窗体里面是显示不了的。
  • 窗体是最顶级的容器,它里面可以放好多的组件,但是放一个组件进来的时候它应该放在窗体的哪个位置呢?这时候就需要通过布局管理器来摆放位置,确定摆放规则。
  •  设置窗体大小/宽高的单位是像素
  •  布局管理器:控制位置的摆放,确定摆放规则,并且给一个默认的大小
  •  除了窗体设置大小是用setSize,其他组件设置大小全部是setPreferredSize
  • ImageIcon这个类负责从磁盘中加载数据
  • 不能把图片直接加载到窗体上,因为ImageIcon这个类负责从磁盘中加载图片,窗体是最顶级的容器,如果要在窗体上显示图片,则还要单独为这个图片去创建一个容器去装载这些数据,然后再把这个容器添加到窗体上,要有这样的一个过渡。
  • 用JLable标签去装载图片数据。
  • JLabel标签不仅可以放图片数据,还可以放文本数据。用户提示也用JLabel标签。
  • 输入框/文本框----->JTextField类
  • JCheckBox类实现复选框
package com.gch.GUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Objects;

public class Login {
    /**
       显示登录界面的方法
     */
    public void showUI(){
        JFrame jf = new JFrame("登陆界面");
        // 设置窗体大小,单位是像素
        jf.setSize(500,380);
        jf.setLocationRelativeTo(null); // 设置居中显示
        jf.setDefaultCloseOperation(3); // 设置退出进程
        jf.setResizable(false); // 设置窗体大小固定

        // 设置流式布局管理器,控制位置摆放,确定摆放规则,并给一个默认的大小
        jf.setLayout(new FlowLayout());

        // 加载图片,ImageIcon这个类负责从磁盘中加载图片
        ImageIcon image = new ImageIcon("C:\\Users\\A.G.H\\Pictures\\Camera Roll\\0124fc57d6bc9b0000012e7e5f05b8.jpg@1280w_1l_2o_100sh.jpg");
    
        // 用JLabel标签这个组件去装载图片数据
        JLabel jla = new JLabel(image);
        // 如果图片过大,会把其他组件从窗体中挤出去
        // 所以我们要设置装载图片容器的大小
        // 除了窗体JFrame设置大小是用setSize,其他组件设置大小全部是用setPreferredSize
        // 设置装载图片容器JLabel的大小
        jla.setPreferredSize(new Dimension(680,210));
        // 把装载图片容器JLabel添加到窗体上
        jf.add(jla);

        // 文本框的用户提示也用JLabel标签,JLabel标签不仅可以放图片数据,还可以放文本数据

        // 账号用户提示  prompt:提示
        JLabel accountUserPrompt = new JLabel("账号: ");
        // 把账号用户提示添加到窗体上
        jf.add(accountUserPrompt);

        // 输入框:文本框----JTextField

        // 账号输入框
        JTextField account = new JTextField();
        // 设置文本框大小
        account.setPreferredSize(new Dimension(420,30));
        // 把账号输入框添加到窗体上
        jf.add(account);

        // 密码用户提示
        JLabel passwordUserPrompt = new JLabel("密码: ");
        // 把密码用户提示添加到窗体上‘
        jf.add(passwordUserPrompt);

        // 密码输入框
        JTextField password = new JTextField();
        // 设置文本框大小
        password.setPreferredSize(new Dimension(420,30));
        // 把密码输入框添加到窗体上
        jf.add(password);

        // 按钮类:JButton

        // 注册账号按钮
        JButton registerAccount = new JButton("注册账号");
        // 把注册账号按钮添加到窗体上
        jf.add(registerAccount);
        // 找回密码按钮
        JButton retrievePassword = new JButton("找回密码");
        // 把找回密码按钮添加到窗体上
        jf.add(retrievePassword);

        // JCheckBox类实现复选框

        // 记住密码复选框
        JCheckBox rememberPassword = new JCheckBox("记住密码");
        // 把记住密码复选框添加到窗体上
        jf.add(rememberPassword);
        // 自动登录复选框
        JCheckBox autoLogin = new JCheckBox("自动登录");
        // 把自动登录复选框添加到窗体上
        jf.add(autoLogin);

        // 登录按钮
        JButton login = new JButton("登录");
        // 给登录按钮设置背景色
        login.setBackground(Color.pink);
        // 把登录按钮添加到窗体上
        jf.add(login);

        jf.setVisible(true); // 设置可见

        // 监听器的使用:设计界面程序的交互功能
        /* 监听器:1.找事件源:当前动作所发生的组件 例如:在输入框输入123之后按回车键,事件源是输入框
                 2.监听器的选择:用什么监听器,设计什么样的功能就选择什么样的监听器
                 3.绑定事件处理类(当监听器监听到按钮上有动作发生,要处理这个动作,实际上就是设计它的响应功能)
         */

        // 给登录按钮添加动作监听器
        login.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(Objects.equals(account.getText(),"123") && Objects.equals(password.getText(),"123")){
                    JOptionPane.showMessageDialog(jf,"登录成功!");
                }else{
                    JOptionPane.showMessageDialog(jf,"您输入的账号或者密码错误!");
                }
            }
        });
    }
}
package com.gch.GUI;

public class Manage {
    /**
       主函数
     */
    public static void main(String[] args) {
        Login login = new Login();
        login.showUI();
    }
}