UserRegistrationForm注册表单

本代码运行结果如上图所示

package _1;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JPasswordField;

import javax.swing.JRadioButton;

import javax.swing.JTextField;

import javax.swing.SwingUtilities;

public class RegistrationForm extends JFrame{

private JTextField usernameField;//用户名输入框

private JPasswordField passwordField;//密码输入框

private JRadioButton maleRadio,femaleRadio;//性别单选按钮

private JCheckBox sportCheck,readCheck,musicCheck;//爱好复选框

public RegistrationForm() {

setTitle("用户注册");

setSize(400,300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序

setLocationRelativeTo(null);//窗口在屏幕中居中显示(参数null表示相对于屏幕居中)

JPanel mainPanel=new JPanel(new GridLayout(6,2,10,10));

//JPanel:容器组件,用于承载其他组件(如输入框、按钮),方便统一布局

//GridLayout(6,2,10,10):网格布局,6行2列,组件之间水平间距10像素,垂直间距10像素

mainPanel.add(new JLabel("用户名:"));

//添加文本标签(提示用户输入内容)

usernameField=new JTextField();

//初始化用户名输入框(默认单行,可直接输入文本)

mainPanel.add(usernameField);

//将输入框添加到主面板的下一列(网格布局自动按照行/列排列)

mainPanel.add(new JLabel("密码:"));

//密码提示标签

passwordField=new JPasswordField();

//初始化密码输入框(输入内容自动转为星号,圆点)

mainPanel.add(passwordField);

//添加到主面板

mainPanel.add(new JLabel("性别:"));

//性别提示标签

JPanel genderPanel=new JPanel();

//子面板:专门承载单选按钮(避免与其他组件布局冲突)

ButtonGroup genderGroup=new ButtonGroup();

//单选按钮组:确保组内按钮互斥

maleRadio=new JRadioButton("男");

femaleRadio=new JRadioButton("女");

genderGroup.add(maleRadio);

genderGroup.add(femaleRadio);

genderPanel.add(maleRadio);

genderPanel.add(femaleRadio);

mainPanel.add(genderPanel);

//子面板添加到主面板(占满1列空间)

//爱好

mainPanel.add(new JLabel("爱好:"));

//爱好提示标签

JPanel hobbyPanel=new JPanel();

sportCheck=new JCheckBox("运动");

//运动:复选框

readCheck=new JCheckBox("阅读");

musicCheck=new JCheckBox("音乐");

hobbyPanel.add(sportCheck);

//复选框添加到子面板

hobbyPanel.add(readCheck);

hobbyPanel.add(musicCheck);

mainPanel.add(hobbyPanel);

//子面板添加到主面板

mainPanel.add(new JLabel());

//空标签:网格布局是6行2列,此处占第一列位置,使按钮居中(美观);

JButton registerBtn=new JButton("注册");

//注册按钮

registerBtn.addActionListener(new RegisterListener());

//给按钮绑定事件监听器

mainPanel.add(registerBtn);

add(mainPanel);//将主面板添加到窗口

setVisible(true);//设置窗口可见(Swing组件默认不可见,必须调用此方法)

}

private class RegisterListener implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

//按钮点击时触发的核心方法

//1.获取用户名:通过JTextField的getText()方法

String username=usernameField.getText();

//2.获取密码:将char[]数组转为String(getPassword()返回char[],更安全)

String password=new String(passwordField.getPassword());

String gender=maleRadio.isSelected()?"男":

femaleRadio.isSelected()?"女":"未选择";

//4.获取爱好:StringBuilder拼接选中的爱好(避免频繁创建String对象)

StringBuilder hobbies=new StringBuilder();

if(sportCheck.isSelected())hobbies.append("运动");

if(readCheck.isSelected())hobbies.append("音乐");

if(hobbies.length()==0)hobbies.append("无");

System.out.println("注册信息:");

System.out.println("用户名:"+username);

System.out.println("密码:"+password);

System.out.println("性别:"+gender);

System.out.println("爱好:"+hobbies.toString());

}

}

public static void main(String []args) {

//Swing组件必须在EDT(事件调度线程)中创建,避免线程安全问题

SwingUtilities.invokeLater(RegistrationForm::new);

//等价于:new RegistrationForm(),但通过invokeLater确保在EDT线程内执行

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值