文章目录
main方法
登录界面
游戏主界面
User类
图片素材获取方式
基于Java实现的拼图小游戏,代码与图片素材来自b站up主黑马程序员的Java教学视频。
main方法
import ui.LoginJframe;
public class App {
public static void main(String[] args) {
new LoginJframe(); //创建登陆界面
}
}
登录界面
package ui;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
//游戏登录界面
public class LoginJframe extends JFrame implements MouseListener {
//创建全集一个用户集合用于登录判断
static ArrayList<User> list=new ArrayList<>();
static String userName;
//添加用户集合成员,用于登录操作判断
static{
list.add(new User("wuhu","yahu"));
}
//切换验证码按键
JButton Switch_Captcha=new JButton();
//设置注册按钮
JButton enrollJButton=new JButton();
//设置登录按钮
JButton loginJButton = new JButton();
//getCaptcha为验证码获取方法,传递的数据为需要返回的验证码的长度
String str_Captcha=getCaptcha(5);
/*登录与注册按钮的图片文件位置*/
String Image_enroll="untitled/image/login/注册按钮.png";
String Image_login="untitled/image/login/登录按钮.png";
//显示用户名输入框
JTextField NameFrame=new JTextField();
//添加验证码文本框
JTextField FrameCaptcha=new JTextField();
//密码输入显示框
JTextField PasswordFrame=new JTextField();
//创建一个弹框对象
JDialog Error;
//登录界面的空参构造
public LoginJframe(){
initJFrame(); //界面初始化项目
initView(); //界面元素添加
//绑定监听
enrollJButton.addMouseListener(this);
loginJButton.addMouseListener(this);
Switch_Captcha.addMouseListener(this);
//将界面状态设置为显示
this.setVisible(true);
}
//界面初始化类
public void initView(){
//清空界面
this.getContentPane().removeAll();
//显示用户名
JLabel UsrtName = new JLabel(new ImageIcon("untitled/image/login/用户名.png"));
UsrtName.setBounds(100,105,47,17);
this.getContentPane().add(UsrtName);
//配置用户名输入框
NameFrame.setBounds(160,100,200,30);
this.getContentPane().add(NameFrame);
//显示密码
JLabel UsrtPassword=new JLabel(new ImageIcon("untitled/image/login/密码.png"));
UsrtPassword.setBounds(100,155,47,17);
this.getContentPane().add(UsrtPassword);
//配置密码框参数
PasswordFrame.setBounds(160,150,200,30);
this.getContentPane().add(PasswordFrame);
//添加验证码
JLabel CaptchaTxT=new JLabel(new ImageIcon("untitled/image/login/验证码.png"));
CaptchaTxT.setBounds(100,215,47,17);
this.getContentPane().add(CaptchaTxT);
//配置验证码文本框参数
FrameCaptcha.setBounds(160,210,100,30);
this.getContentPane().add(FrameCaptcha);
//验证码显示
System.out.println(str_Captcha);
JLabel Captcha=new JLabel(str_Captcha);
Captcha.setBounds(280,215,50,20);
this.getContentPane().add(Captcha);
//设置验证码按钮
Switch_Captcha.setBounds(275,215,50,20);
Switch_Captcha.setBorderPainted(false);
Switch_Captcha.setContentAreaFilled(false);
this.getContentPane().add(Switch_Captcha);
//配置登录按钮
loginJButton.setIcon(new ImageIcon(Image_login));
loginJButton.setBorderPainted(false); //去除按钮的默认边框
loginJButton.setContentAreaFilled(false); //去除按钮的默认背景
loginJButton.setBounds(123,310,128,47); //设置位置与大小
this.getContentPane().add(loginJButton);
//配置注册按钮
enrollJButton.setIcon(new ImageIcon(Image_enroll));
enrollJButton.setBorderPainted(false); //去除按钮的默认边框
enrollJButton.setContentAreaFilled(false); //去除按钮的默认背景
enrollJButton.setBounds(270,310,128,47); //设置位置与大小
this.getContentPane().add(enrollJButton);
// 添加背景图片
//设置一个JLabel对象进行管理图片
JLabel background_JLabel=new JLabel(new ImageIcon("untitled/image/register/background.png"));
//设置图片的位置与宽高
background_JLabel.setBounds(0,0,470,390);
//将容器添加到界面当中
this.getContentPane().add(background_JLabel);
//刷新界面
this.getContentPane().repaint();
}
//获取验证码方法 n 为需要返回的验证码长度
public static String getCaptcha(int len){
Random r=new Random(); //设置随机方法种子
StringBuilder str=new StringBuilder();
for (int i = 0; i < len-1; i++) {
int num=r.nextInt(58)+65; //字母范围的数值
//跳过ascii表中的其他字符
if(num > 90 && num < 97){
num+=7;
}
str.append((char)num); //将数值强制转换为字母并添加到字符串中
}
//将数字添加到字符串中
int number=r.nextInt(10);
str.append(number);
//转换为字符数组更好进行乱序的操作
char []arr= str.toString().toCharArray();
//将其数组元素顺序打乱
for (int i = 0; i < arr.length; i++) {
int index=r.nextInt(arr.length);
char temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
//将完成的验证码转换为字符串将其返回
return new String(arr);
}
//注册界面初始化方法
public void initJFrame(){