文章目录
前言
在完成许许多多的系统的时候,往往都会涉及到用户注册的问题,那么这篇文章就是在图形界面的基础知识上实现的一个简单的注册窗口。
一、问题描述
创建一个系统用户的注册窗体,自行设置选项,尽量使用多的控件,至少包括JCheckBox,JRadioButton,JTextFiled,JTextArea等组件,确认前将用户的注册信息显示,之后完成注册。
二、运行结果
1.注册成功
2.异常处理
输入密码不一致时,弹出警示框!
当用户信息没有填写完整时 ,弹出警示框!
当用户账号已经存在时,弹出警示框!
3.代码
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class RegisterWindow extends JFrame implements ActionListener{//注册窗体
JButton jb1,jb2,jb3,jb4;//按钮
JLabel JL1,JL2,JL3;//标签
JPanel jp1,jp2,jp3,jp4;//面板
JTextField jt1,jt2,jt3;//文本框
public RegisterWindow() {
JL1=new JLabel("请输入您的姓名:");
JL2=new JLabel("请输入您设置密码:");
JL3=new JLabel("请再次输入您设置密码:");
// 设置展示文字的字体和大小
JL1.setFont(new Font("华文行楷", 1, 20));
JL2.setFont(new Font("华文行楷", 1, 20));
JL3.setFont(new Font("华文行楷", 1, 20));
//可写入文本框
jt1=new JTextField();
jt1.setPreferredSize(new Dimension(130,30));
jt2=new JTextField();
jt2.setPreferredSize(new Dimension(130,30));
jt3=new JTextField();
jt3.setPreferredSize(new Dimension(130,30));
//按钮
jb1=new JButton("确认");
jb1.setFont(new Font("华文行楷", 1, 20));
jb2=new JButton("取消");
jb2.setFont(new Font("华文行楷", 1, 20));
jb1.addActionListener(this);
jb2.addActionListener(this);//监听器
//面板
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
//将组件添加到面板上
jp1.add(JL1);
jp1.add(jt1);
jp2.add(JL2);
jp2.add(jt2);
jp3.add(JL3);
jp3.add(jt3);
jp4.add(jb1);
jp4.add(jb2);
//将面板添加到窗体
this.add(jp1);
this.add(jp2);
this.add(jp3);
this.add(jp4);
//设置布局
this.setTitle("注册窗口");
this.setLayout(new GridLayout(4,1));//页面排版
this.setSize(450,330);//设置窗口大小
this.setLocationRelativeTo(null);//居中显示
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//设置仅关闭当前窗口
this.setVisible(true);//设置可见
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="确认") {
String name=jt1.getText();
String password=jt2.getText();
String password1=jt3.getText();
try {
if(password.equals(password1)&&!jt1.getText().isEmpty()&&!jt2.getText().isEmpty()&&!jt3.getText().isEmpty()&&check(name)==false) {//两次输入的密码相同并且内容都已经写上
JOptionPane.showMessageDialog(null,"注册成功!","提示消息",JOptionPane.WARNING_MESSAGE);
dispose(); //使文原窗体消失
//将注册的信息存入到文件中
String dir ="D:/programming/MyJava/注册信息.txt";
File file=new File(dir);
BufferedWriter bu;
try {
bu = new BufferedWriter(new FileWriter(file,true));
bu.write("\n"+name+",");
bu.write(password+"\t");
bu.close();
} catch (IOException e2) {
e2.printStackTrace();
}
}else if(!password.equals(password1)){
JOptionPane.showMessageDialog(null,"密码不一致!","提示消息",JOptionPane.WARNING_MESSAGE);
}else if(jt1.getText().isEmpty()||jt2.getText().isEmpty()||jt3.getText().isEmpty()) {
JOptionPane.showMessageDialog(null,"信息没有填写完整!","提示消息",JOptionPane.WARNING_MESSAGE);
}else if(check(name)==true) {
JOptionPane.showMessageDialog(null,"账户已存在,无法再次注册!","提示消息",JOptionPane.WARNING_MESSAGE);
}
} catch (HeadlessException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
}
public static boolean check(String name) throws IOException {//创建check方法,来检查注册的用户是否已经存在
String dir="D:/programming/MyJava/注册信息.txt";
File file=new File(dir);
@SuppressWarnings("resource")
BufferedReader b=new BufferedReader(new FileReader(file));
String temp=null;
temp=b.readLine();//先读取一行
while(temp!=null) {
String sbstring=temp.toString();//转化为String
int n=sbstring.length();//测字符串长度
String []message=new String[2];
int k=0;
for(int i=0;i<2;i++) {
message[i]="";
}
for(int i=0;i<n;i++) {
if(sbstring.charAt(i)==',') {
k++;
}
else {
message[k]+=sbstring.charAt(i);
}
}
if(name.equals(message[0])) {
return true;
}
temp=b.readLine();
}
return false;
}
@SuppressWarnings("unused")
private void clear() {//清空文本框中的信息
jt1.setText(" ");
jt2.setText(" ");
jt3.setText(" ");
}
public static void main(String[] args) throws IOException {
@SuppressWarnings("unused")
RegisterWindow R=new RegisterWindow();
}
}
总结
这个注册窗体非常的简陋,还有许多的异常处理情况没有考虑进去,有需要的小伙伴谨慎粘贴!