首页 > 基础资料 博客日记
JAVA—图形化“登录,注册”界面
2024-07-19 01:00:06基础资料围观133次
前言:学习了一段时间JAVA的swing组件,心血来潮写了一个登录,注册界面。
知道大伙喜欢美女,所以把用户登录界面背景设置成了beauty!
所用知识基本上都属于swing组件:
javax.siwng.JFrame; //窗体类
javax.swing.JButton; //按钮类
javax.swing.JLabel; //标签类
javax.swing.JTextField; //文本框类
javax.swing.JPasswordField; //密码框类
javax.swing.ImageIcon; //图标类
集合ArrayList;
MouseListener鼠标监听器;
JOptionPane.showMessageDialog(Component parentComponent, Object message)方法
该方法是弹出一个消息框,代码中使用了多次。效果如图:
代码实现如下:
// 个人觉得main函数里面的内容越精简越好
public class GameWin {
public static void main(String[] args) {
//创建了一个Register_LogIn类的对象register_logIn,并调用了空参构造
Register_LogIn register_logIn=new Register_LogIn();
}
}
看到这里还是一脸蒙吧,别急,往下看。
下面这个就是创建的Register_LogIn类,他的空参构造在下面也会详细讲解。
//需要用到的类 import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Random;
//创建登录——注册类 public class Register_LogIn extends JFrame { //创建集合用来存放账户和密码信息。 static ArrayList<String> users=new ArrayList<>(); //下面的代码都在这个类里面// //构造setCode方法来创建一个随机的验证码 String setCode(){ Random r=new Random(); char[] c=new char[52]; //在数组中存放52个英文字母 String result=""; for (int i = 0; i < c.length; i++) { if(i<26){ c[i]=(char)(65+i);//存放a~z } else { c[i]=(char)(97+i-26);//存放A~Z } } for (int i = 0; i < 4; i++) { int number=r.nextInt(c.length); result=result+c[number]; } int figure=r.nextInt(10); result=result+figure; //将字符串变为数组 char[] crr=result.toCharArray(); char t; //将数组打乱 for (int i = 0; i < crr.length; i++) { int rom=r.nextInt(5); t=crr[i]; crr[i]=crr[rom]; crr[rom]=t; } //得到验证码 return String.valueOf(crr); }
//这里就是空参构造了,用来构建用户窗口 public Register_LogIn(){ //创建开始界面 JFrame jFrame=new JFrame(); jFrame.setTitle("用户登录界面"); jFrame.setLocationRelativeTo(null); jFrame.setSize(800,480); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jFrame.setLayout(null); //添加背景图片 ImageIcon icon=new ImageIcon("D:\\壁纸\\small074417O9mVb1695253457.jpg"); JLabel jLabel=new JLabel(icon); jLabel.setBounds(0,0,800,440); //设置界面元素 JLabel account=new JLabel("账号"); JLabel password=new JLabel("密码"); JLabel code=new JLabel("验证码"); JButton renew=new JButton(setCode()); //将验证码的值赋给renew按钮 renew.setText(setCode()); JButton register=new JButton("注册"); JButton logIn=new JButton("登录"); //这三个是输入框,下面图片中灰色的框就是 JTextField account_=new JTextField(80); JTextField password_=new JTextField(80); JTextField code_=new JTextField(70); //按钮的背景 register.setIcon(new ImageIcon("C:\\Users\\21299\\Pictures\\Camera Roll\\1-图片\\imgs\\AE26B098-CB4C-46d5-A6D8-AAE4330AAFCB.png")); logIn.setIcon(new ImageIcon("C:\\Users\\21299\\Pictures\\Camera Roll\\1-图片\\imgs\\46B4E49A-7D7D-4dfb-916F-0881A4634E9A.png")); //设置位置 register.setBounds(200,380,140,45); logIn.setBounds(450,380,140,45); renew.setBounds(410,340,90,30); account.setBounds(250,250,80,50); password.setBounds(250,290,80,50); code.setBounds(235,330,80,50); account_.setBounds(300,260,200,30); password_.setBounds(300,300,200,30); code_.setBounds(300,340,100,30); //设置按钮字体的颜色和字样 account.setForeground(Color.GREEN); password.setForeground(Color.GREEN); code.setForeground(Color.GREEN); account.setFont(new Font("楷体",Font.BOLD,20)); password.setFont(new Font("楷体",Font.BOLD,20)); code.setFont(new Font("楷体",Font.BOLD,20)); //输入框的颜色 account_.setBackground(Color.lightGray); password_.setBackground(Color.lightGray); code_.setBackground(Color.lightGray); //将元素添加进窗口 jFrame.add(account); jFrame.add(account_); jFrame.add(password); jFrame.add(password_); jFrame.add(code); jFrame.add(code_); jFrame.add(register); jFrame.add(logIn); jFrame.add(renew); jFrame.add(jLabel); jFrame.setVisible(true); //写到这里就可以呈现出下面的窗口画面(1)了
图(1):
//给注册,登录按钮添加鼠标监听器 register.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); if(e.getButton()==1){ //如果左键点击注册,跳转进Register窗口 new Register(); } } }); logIn.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); if(e.getButton()==1){ if(account_.getText().isEmpty() ||password_.getText().isEmpty()){ JOptionPane.showMessageDialog(null,"请输入完整信息再登录"); } else if (!renew.getText().equals(code_.getText())) { JOptionPane.showMessageDialog(null,"验证码输入错误"); } else{ //输入的账户,密码是否正确的依据 boolean flag = false; for(int i=0;i<users.size();i++){ if(account_.getText().equals(users.get(i))&&password_.getText().equals(users.get(i+1))){ flag=true;//如果无误,则true break; } } if(flag){ JOptionPane.showMessageDialog(null,"登录成功!"); }else{ JOptionPane.showMessageDialog(null,"用户不存在"); } } } } });
} }
下面是上面代码中写的登录时会出现的几种情况,运行出来如下:
下面的是注册账户和密码的窗口,登录的前提是创建的有,所以注册的处理也想当重要;
和上面的用户登录窗口大差小不差,所以我没有添加背景什么的,看上去就是一个简朴的窗口,有兴趣的话可以自己设置添加一些元素,让这个窗口看上去更好看。
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
public class Register extends JFrame {
boolean flag;//flag为账户是否已经存在的标准
public Register(){
//注册界面的窗口设置
this.setTitle("注册界面");
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setSize(500,300);
this.setLocationRelativeTo(null);
this.setLayout(null);
this.setVisible(true);
//设置窗口元素
JLabel account=new JLabel("注册账户");
account.setBounds(50,50,100,50);
account.setFont(new Font("楷体",Font.BOLD,20));
JLabel password=new JLabel("注册密码");
password.setBounds(50,100,100,50);
password.setFont(new Font("楷体",Font.BOLD,20));
JLabel nextpassword=new JLabel("再次输入密码");
nextpassword.setBounds(50,150,150,50);
nextpassword.setFont(new Font("楷体",Font.BOLD,20));
JTextField account_=new JTextField(30);
JTextField password_=new JTextField(30);
JTextField nextpassword_=new JTextField(30);
account_.setBounds(150,60,250,30);
password_.setBounds(150,110,250,30);
nextpassword_.setBounds(200,160,200,30);
JButton jButton=new JButton("注册");
jButton.setBounds(120,200,80,40);
this.add(jButton);
JButton jButton2=new JButton("退出");
jButton2.setBounds(240,200,80,40);
this.add(jButton2);
//添加入窗口
this.add(account);
this.add(account_);
this.add(password);
this.add(password_);
this.add(nextpassword);
this.add(nextpassword_);
//代码敲到这里就可以实现这个窗口的基本布局了,如下图(2)
//给注册和退出添加鼠标监听器
jButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
if(e.getButton()==1){
//for—each循环遍历,判断当前注册的账户是否已经存在
for(String str:Register_LogIn.users){
String accountStr=account_.getText();
if(str.equals(accountStr)) {
flag = true;
break;
}
}
if(!flag){
//如果可以注册,接着判断是否为空
if(account_.getText().isEmpty()
||password_.getText().isEmpty()){
JOptionPane.showMessageDialog(null,"账户或密码不能为空");
}else{
//判断两次密码是否一致
String passwordStr=password_.getText();
String nextpasswordStr=nextpassword_.getText();
if(passwordStr.equals(nextpasswordStr)){
//将账户和密码添加到集合中
String accountStr=account_.getText();
Register_LogIn.users.add(accountStr);
Register_LogIn.users.add(passwordStr);
JOptionPane.showMessageDialog(null,"注册成功");
flag=false;
}
else{
JOptionPane.showMessageDialog(null,"两次密码输入不一致");
}
}
}else{
JOptionPane.showMessageDialog(null, "该用户已存在!");
}
}
}
});
jButton2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
if(e.getButton()==1){
//点击按钮“退出”后关闭此界面
dispose();
}
}
});
}
}
图(2):
下面是代码中写的注册新账户时会出现的几种情况,运行出来如下:
写完这一切代码后,恭喜你,已经完成了图形化“登录,注册”界面!
如果各位老板有什么不懂或者比我方法更好的,欢迎在评论区留言~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: