java gui swing 实现注册界面 要求:户输入账号、密码、确认密码、性别、生日、兴趣、备注。其中带*为必填项。单击“注册”按钮,判断必填项是否填完整,两次密码是否输入一致。

本文介绍了一个简单的用户注册界面实现过程,包括用户输入验证、信息显示等功能。通过Java Swing完成界面设计,利用监听器进行交互控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现用户注册界面

设计实现用户注册界面,每组将实验报告提交至学习通,要求实验报告中包含功能展示与源代码。

要求:用户输入账号、密码、确认密码、性别、生日、兴趣、备注。其中带*为必填项。单击“注册”按钮,判断必填项是否填完整,两次密码是否输入一致。若注册信息有误,在左下角提示错误原因(选做);若注册信息完整、正确,提示注册成功,将用户输入的信息打印到屏幕。按重置按钮将所有输入内容清空(必做)。

效果图

自认为很丑,但是功能认为还挺全
在这里插入图片描述

在这里插入图片描述在这里插入图片描述以下为代码实现,本人做出来的界面很丑,功能实现就可以。
这里是用于判断性别的gender类

public class Gender {
    private Object genger;

    public Gender() {
    }

    @Override
    public String toString() {
        return "Gender{" +
                "genger=" + genger +
                '}';
    }

    public Object getGenger() {
        return  genger;
    }

    public void setGenger(Object genger) {
        this.genger = genger;
    }

    public Gender(Object genger) {
        this.genger = genger;
    }
}

代码内有注释。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class Test04 {
    public static void main(String[] args) {

        //这里创建三个列表用于后期接收传来的内容,在注册功能中比对密码的正确性
        List username = new ArrayList();
        List password1 = new ArrayList();
        List password2 = new ArrayList();



        //这里是性别
        Gender genderint = new Gender(null);
        //这里是生日
        List yearshuzu = new ArrayList();
        List monthshuzu = new ArrayList();
        List dayshuzu = new ArrayList();

        //这里是兴趣
        List xingqushuzu =new ArrayList();


        JFrame frame = new JFrame();

        frame.setSize(1000,1000);


        //这里创建JLabel 放置用户名密码
        JLabel l1 = new JLabel("用户名");
        JLabel l2 = new JLabel("密  码 ");
        JLabel l3 = new JLabel("");

        //这里放置注册重置
        JButton b1 = new JButton("注册");
        JButton b2 = new JButton("重置");
        //创建一个用户名的text
        JTextField t1 = new JTextField(10);
        //创建密码的jpassword
        JPasswordField pf1 = new JPasswordField(10);
        JPanel p1 = new JPanel(new FlowLayout());//面板p1流式布局
        p1.add(l1);p1.add(t1); //存放用户名和文本框
        JPanel p2 = new JPanel(new FlowLayout());//面板p2流式布局
        p2.add(l2);p2.add(pf1); //存放密码和密码框


        //这里放置确认密码功能
        JPanel p6 = new JPanel(new FlowLayout());
        //放置确认密码
        JPasswordField pf2 = new JPasswordField(10);
        p6.add(new JLabel("确认密码"));p6.add(pf2);
        JPanel  p3 = new JPanel(new FlowLayout());//面板p3流式布局
        p3.add(b1);p3.add(b2); //存放注册和重置按钮


        //这里存放性别
        JLabel labelgenger = new JLabel("性别:");
        JLabel empty = new JLabel();
        ButtonGroup gender = new ButtonGroup();
        JRadioButton man = new JRadioButton("男");
        JRadioButton woman = new JRadioButton("女");
        //点击男性时候 把性别参数改为1
        //这里是男性按钮
        man.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //外部创建了一个类Gender 其中有一个Object参数表示男女 0代表女 1代表男
                genderint.setGenger(1);
                System.out.println(genderint.getGenger());
            }
        });
        //这里是女性按钮
        //点击时候设置gender 类的 genderint实例变量的gender属性为0
        woman.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                genderint.setGenger(0);
                System.out.println(genderint.getGenger());
            }
        });
        gender.add(man);gender.add(woman);
        JPanel p7 = new JPanel(new GridLayout(2, 2));
        p7.add(labelgenger);
        p7.add(empty);
        p7.add(man);
        p7.add(woman);


        //这里存放生日
        JPanel p8 = new JPanel(new FlowLayout());
        JLabel labelBirth = new JLabel("生日:");
        //这里循环创建列表
        //然后转换为数组
        List<String> year1 = new ArrayList();
        //先添加一个按钮让人选择,如果没有选择会弹出没有选择生日
        year1.add("---请选择---");
        for (int i = 2021;i>=1950;i--){
            year1.add(String.valueOf(i));
        }
        String[] year = year1.toArray(new String[year1.size()]);

        List<String> month1 = new ArrayList();
        month1.add("---请选择---");
        for (int i = 0;i<12;i++){
            month1.add(String.valueOf(i+1));
        }
        String[] month = month1.toArray(new String[month1.size()]);


        List<String> day1 = new ArrayList<>();
        day1.add("---请选择---");

        for (Integer i = 1; i< 30;i++){
            day1.add(String.valueOf(i));
        }
        String[] day = day1.toArray(new String[month1.size()]);

        //这里把转换好的数组放进去
        JComboBox<String> birthyear = new JComboBox<>(year);
        JComboBox<String> birthmonth = new JComboBox<>(month);
        JComboBox<String> birthday = new JComboBox<>(day);
        p8.add(labelBirth);
        p8.add(birthyear);
        p8.add(birthmonth);
        p8.add(birthday);


        //给按键添加监听
        birthyear.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                //如果他的状态为被选中
                if (e.getStateChange() == 1){
                    //将选中的这个item转化为String赋值给yearshuzu
                    //以下同理
                    yearshuzu.add(String.valueOf(e.getItem()));
                    System.out.println(yearshuzu.get(0));
                }
            }
        });
        birthmonth.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == 1){
                    monthshuzu.add(String.valueOf(e.getItem()));
                    System.out.println(monthshuzu.get(0));
                }
            }
        });
        birthday.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == 1){
                    dayshuzu.add(String.valueOf(e.getItem()));
                    System.out.println(dayshuzu.get(0));
                }
            }
        });




        //这里存放兴趣
        JCheckBox jc1 = new JCheckBox("抽烟");
        JCheckBox jc2 = new JCheckBox("喝酒");
        JCheckBox jc3 = new JCheckBox("烫头");
        JCheckBox jc4 = new JCheckBox("泡吧");
        JCheckBox jc5 = new JCheckBox("飙车");
        JCheckBox jc6 = new JCheckBox("打游戏");
        JCheckBox jc8 = new JCheckBox("网恋");
        JCheckBox jc9 = new JCheckBox("做舔狗");
        jc9.setForeground(Color.red);
        JPanel p9 = new JPanel(new GridLayout(2,4));
        p9.add(jc1);
        p9.add(jc2);
        p9.add(jc3);
        p9.add(jc4);
        p9.add(jc5);
        p9.add(jc6);
        p9.add(jc8);
        p9.add(jc9);
        jc1.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                //如果这个是被选中的
                if (jc1.isSelected() == true){
                    //将这个文本添加到xingqushuzu里面
                     xingqushuzu.add(jc1.getText());
                     //如果没有选中
                }else if (jc1.isSelected()==false){
                    //将这个文本删除,因为可能有人点了勾勾 又取消了勾勾
                    //以下同理
                    xingqushuzu.remove(jc1.getText());
                }
            }
        });
        jc2.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (jc2.isSelected() == true){
                    xingqushuzu.add(jc2.getText());
                }else if (jc2.isSelected()==false){
                xingqushuzu.remove(jc2.getText());
                }
            }
        });
        jc3.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (jc3.isSelected() == true){
                    xingqushuzu.add(jc3.getText());
                }else if (jc3.isSelected()==false){
                    xingqushuzu.remove(jc3.getText());
                }
            }
        });
        jc4.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (jc4.isSelected() == true){
                    xingqushuzu.add(jc4.getText());
                }else if (jc4.isSelected()==false){
                    xingqushuzu.remove(jc4.getText());
                }
            }
        });
        jc5.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (jc5.isSelected() == true){
                    xingqushuzu.add(jc5.getText());
                }else if (jc5.isSelected()==false){
                    xingqushuzu.remove(jc5.getText());
                }
            }
        });
        jc6.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (jc6.isSelected() == true){
                    xingqushuzu.add(jc6.getText());
                }else if (jc6.isSelected()==false){
                    xingqushuzu.remove(jc6.getText());
                }
            }
        });
        jc8.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (jc8.isSelected() == true){
                    xingqushuzu.add(jc8.getText());
                }else if (jc8.isSelected()==false){
                    xingqushuzu.remove(jc8.getText());
                }
            }
        });
        jc9.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (jc9.isSelected() == true){
                    xingqushuzu.add(jc9.getText());
                }else if (jc9.isSelected()==false){
                    xingqushuzu.remove(jc9.getText());
                }
            }
        });


        JPanel p4 = new JPanel();//面板p4默认流式布局
        l3.setForeground(Color.red);
        p4.add(l3); //存放提示标签


        //这里是备注 注册成功将信息显示在此面板上
        //以下是一系列的设置,设置滚动换行什么的
        JPanel p5 = new JPanel(new FlowLayout());
        JTextArea jTextArea1 = new JTextArea(5, 20);
        jTextArea1.setLineWrap(true);
        JScrollPane jScrollPane = new JScrollPane(jTextArea1);
        jScrollPane.setBorder(BorderFactory.createLoweredBevelBorder());
        p5.add(jScrollPane);



        //这里给注册和重置按钮监听
        b1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //首先把提示标签设置为空 以免上一次注册失败,留下来的标签还在
                l3.setText("");
                System.out.println("这里是注册");

                //这里如果用户名文本框的取值为空,令他为null 不然就是username = "";

                if (t1.getText().equals("")){
                    username.add(0,null);
                }else {
                    //如果取值不为空,就让他得到文本框中的内容
                    username.add(0,t1.getText());
                }
                //将密码栏中的信息得到,添加给passwrod数组 用于确认密码
                password1.add(0,new String(pf1.getPassword()));
                password2.add(0,new String(pf2.getPassword()));

                //这里是为了检查数据是否和我输入的一致
                System.out.println(username.get(0));
                System.out.println(password1.get(0));
                System.out.println(password2.get(0));
                System.out.println(yearshuzu.get(0));
                System.out.println(monthshuzu.get(0));
                System.out.println(dayshuzu.get(0));
                System.out.println(genderint.getGenger());
                System.out.println(xingqushuzu);
                /*
                if (password1[0].equals(password2[0])){
                    System.out.println("yes");
                }else {
                    System.out.println("no");
                }*/
                //这里是将兴趣数组中的null值删除,好像没什么用了 一开始用数组需要用到它,list好像没啥用
                //试了一下确实没有用了
                /*for (int i = 0; i < xingqushuzu.size(); i++) {
                    if (xingqushuzu.get(i) == null){
                        xingqushuzu.remove(i);
                    }
                }*/

                System.out.println(username);

                //这里是判断需要填的信息,如果这个信息是null 就走下面的方法
                //=======================这里要注意===================
                //=======================这里要注意===================
                //password1.get(0) 和 password2.get(0) 之间不能用 == 比较, 这样比的是内存地址,因为没有重写方法,所以要用equals函数来比较内容
                //=======================这里要注意===================
                //=======================这里要注意===================
                //=======================这里要注意===================
                if (username.get(0)!=null && password1.get(0).equals(password2.get(0)) && yearshuzu.get(0)!=null && monthshuzu.get(0)!=null && dayshuzu.get(0)!= null && genderint.getGenger()!= null){
                    System.out.println("注册成功");
                    //如果性别的值为1 就打印男 这里的"\r\n"是换行 手动换一下行 不然不好看
                    if (genderint.getGenger().equals(1)){
                        jTextArea1.setText("注册成功" + "\r\n"+"用户名为:"+username.get(0) + "\r\n"+"密码为:"+password1.get(0)+ "\r\n"+"兴趣为:"+xingqushuzu+
                                "\r\n" + "生日为:"+yearshuzu.get(0)+"-"+monthshuzu.get(0)+"-"+dayshuzu.get(0)+"\r\n"+"性别为:男");
                    }                    //如果性别的值为1 就打印男else if (genderint.getGenger().equals(0))
                    //如果性别的值为1 就打印女
                    else if (genderint.getGenger().equals(0)){
                        jTextArea1.setText("注册成功" + "\r\n"+"用户名为:"+username.get(0) + "\r\n"+"密码为:"+password1.get(0)+ "\r\n"+"兴趣为:"+xingqushuzu+
                                "\r\n" + "生日为:"+yearshuzu.get(0)+"-"+monthshuzu.get(0)+"-"+dayshuzu.get(0)+"\r\n"+"性别为:女");
                    }
                    //这里是判断哪里错了 如果哪里错了 就告诉他哪里错了
                }else if (username.get(0) == null){
                    l3.setText("用户名不能为空");
                }
                else if (genderint.getGenger() == null){
                    l3.setText("性别不能为空");
                }else if (password1.get(0) == null){
                    l3.setText("密码不能为空");
                }else if (!password1.get(0).equals(password2.get(0))){
                    l3.setText("密码输入不同");
                }else if (yearshuzu.get(0) == null){
                    l3.setText("生日的年不能为空");
                }else if (monthshuzu.get(0) == null){
                    l3.setText("月不能为空");
                }else if (dayshuzu.get(0) == null){
                    l3.setText("日不能为空");
                }
                else {
                    l3.setText("我也不知道哪里错了");
                }
            }
        });
        //这里是重置按钮
        //直接清空所有的内容
        //并且设置所有的文本框清空
        b2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                username.removeAll(username);
                password1.removeAll(password1);
                password2.removeAll(password2);
                genderint.setGenger(null);
                yearshuzu.remove(yearshuzu);
                monthshuzu.removeAll(monthshuzu);
                dayshuzu.removeAll(dayshuzu);
                xingqushuzu.removeAll(xingqushuzu);
                t1.setText("");
                System.out.println("重置");
                pf1.setText("");
                pf2.setText("");
                jc1.setSelected(false);
                jc2.setSelected(false);
                jc3.setSelected(false);
                jc4.setSelected(false);
                jc5.setSelected(false);
                jc6.setSelected(false);
                jc8.setSelected(false);
                jc9.setSelected(false);
                jTextArea1.setText("");
            }
        });


        frame.setLayout(new GridLayout(6,2));//设置网格式布局管理器,将组件垂直摆放在一列

        //按照顺序添加 JPanel()

        //用户名
        frame.add(p1);
        //生日
        frame.add(p8);
        //密码
        frame.add(p2);
        //兴趣
        frame.add(p9);
        //确认密码
        frame.add(p6);
        //空白panel
        frame.add(new JPanel());
        //性别
        frame.add(p7);
        //备注
        frame.add(p5);
        //登录重铸
        frame.add(p3);
        frame.add(p4);


        frame.pack();
        frame.setTitle("注册器");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值