目录
一、界面预览
1.登录界面
2.注册界面
3.游戏主界面
二、项目结构
项目中路径都为相对路径 在每个界面代码开头 定义为成员变量path
三、代码实现
注册、登录页面都已完成,
注释都存在于代码中,在此不再进行过多阐述。
1.登录
LoginJFrame.java——登录界面
package com.itheima.ui;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
public class LoginJFrame extends JFrame implements MouseListener {
//LoginJFrame 表示登录界面
//以后所有跟登录相关的代码,都写在这里
String path = "p144--code\\image\\login\\";
//初始化对象
JTextField UserjTextField = new JTextField();//用户名输入框
JPasswordField passwordField = new JPasswordField();//用户密码输入框
JTextField code = new JTextField();//验证码输入框
JButton loginButton = new JButton();//登录按钮
JButton enrollButton = new JButton();//注册按钮
JLabel seelabel = new JLabel();
//验证码区域
JLabel rightCode = new JLabel();
//定义用户信息列表 并初始化数据
public static ArrayList<UserInfo> userInfoArrayList = new ArrayList<>();
{
userInfoArrayList.add(new UserInfo("heima","123"));
for (UserInfo userInfo : userInfoArrayList) {
System.out.println("用户信息:"+userInfo.getName()+" "+userInfo.getPaw());
}
}
public LoginJFrame() {
//初始化界面
initJFrame();
//页面内容
initView();
}
//初始化界面
private void initJFrame() {
//在创建登录界面的时候,同时给这个界面去设置一些信息
//比如,宽高,直接展示出来
this.setSize(488, 430);
//设置界面的标题
this.setTitle("拼图登录界面");
//设置界面置顶
this.setAlwaysOnTop(true);
//设置界面居中
this.setLocationRelativeTo(null);
//设置关闭模式
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//取消内部默认布局
this.setLayout(null);
this.setVisible(true);
}
//页面内容
public void initView() {
//添加用户名标签
JLabel UserjLabel = new JLabel(new ImageIcon(path + "用户名.png"));
UserjLabel.setBounds(100, 140, 47, 17);
this.getContentPane().add(UserjLabel);
//添加输入框
UserjTextField.setBounds(195, 134, 200, 30);
this.getContentPane().add(UserjTextField);
//添加密码标签
JLabel PawjLabel = new JLabel(new ImageIcon(path + "密码.png"));
PawjLabel.setBounds(110, 200, 32, 16);
this.getContentPane().add(PawjLabel);
//添加密码输入框
passwordField.setBounds(195, 195, 200, 30);
passwordField.setEchoChar('*');
this.getContentPane().add(passwordField);
//密码显示
seelabel.setIcon(new ImageIcon(path + "显示密码.png"));
seelabel.setBounds(400, 195, 50, 30);
seelabel.addMouseListener(this);
this.getContentPane().add(seelabel);
//验证码提示
JLabel codeText = new JLabel(new ImageIcon(path + "验证码.png"));
codeText.setBounds(100, 256, 50, 30);
this.getContentPane().add(codeText);
//验证码的输入框
code.setBounds(195, 256, 100, 30);
this.getContentPane().add(code);
//生成5个随机验证码
String codeStr = CodeUtil.Create(5);
//设置内容
rightCode.setText(codeStr);
//绑定鼠标事件
rightCode.addMouseListener(this);
//位置和宽高
rightCode.setBounds(300, 256, 50, 30);
//添加到界面
this.getContentPane().add(rightCode);
//设置登录按钮
loginButton.setBounds(123, 310, 128, 47);
ImageIcon icon1 = new ImageIcon(path + "登录按钮.png");
loginButton.setIcon(icon1);
//去除按钮的边框
loginButton.setBorderPainted(false);
//去除按钮的背景
loginButton.setContentAreaFilled(false);
loginButton.addMouseListener(this);
this.getContentPane().add(loginButton);
//设置注册按钮
enrollButton.setBounds(256, 310, 128, 47);
ImageIcon icon2 = new ImageIcon(path + "注册按钮.png");
enrollButton.setIcon(icon2);
//去除按钮的边框
enrollButton.setBorderPainted(false);
//去除按钮的背景
enrollButton.setContentAreaFilled(false);
enrollButton.addMouseListener(this);
this.getContentPane().add(enrollButton);
//创建背景色
JLabel back = new JLabel(new ImageIcon(path + "background.png"));
back.setBounds(0, 0, 470, 390);
this.getContentPane().add(back);
//刷新一下界面
this.getContentPane().repaint();
}
//弹窗设置
public void showDialog(String str) {
JDialog dialog = new JDialog();
dialog.setSize(180, 150);
//让弹框置顶
dialog.setAlwaysOnTop(true);
//让弹框居中
dialog.setLocationRelativeTo(null);
//弹框不关闭永远无法操作下面的界面
dialog.setModal(true);
JLabel warning = new JLabel(str);
//让显示的文字居中
warning.setHorizontalAlignment(JLabel.CENTER);
warning.setBounds(0, 0, 200, 150);
dialog.getContentPane().add(warning);
//让弹框展示出来
dialog.setVisible(true);
}
//核对用户信息
public boolean contains(UserInfo userInfo){
//for增强
for (UserInfo rightuser : userInfoArrayList) {
//集合user
if (userInfo.getName().equals(rightuser.getName()) && userInfo.getPaw().equals(rightuser.getPaw())) {
//相同则通过进行下一步
return true;
}
}
return false;
}
//鼠标点击监听
@Override
public void mouseClicked(MouseEvent m) {
if (m.getSource() == loginButton) {
System.out.println("用户点击登录按钮");
String name = UserjTextField.getText();
String paw = passwordField.getText();
//获取验证码
String codeInput = code.getText();
UserInfo user = new UserInfo(name, paw);
System.out.println("用户输入的用户名为:" + name);
System.out.println("用户输入的密码为:" + paw);
if (codeInput.length() == 0 && name.length() != 0 && paw.length() != 0) {
System.out.println("用户验证码为空!");
showDialog("验证码不能为空!");
String code = CodeUtil.Create(5);//创建一个5位长度的随机验证码
rightCode.setText(code);
} else if (name.length() == 0 || paw.length() == 0) {
System.out.println("用户名或者密码为空");
showDialog("用户名或者密码为空");
String code = CodeUtil.Create(5);
rightCode.setText(code);
//判断输入的验证码与生成的验证码是否相同
} else if (!codeInput.equalsIgnoreCase(rightCode.getText())) {
showDialog("验证码输入错误");
String code = CodeUtil.Create(5);
rightCode.setText(code);
} else if (contains(user)) {
System.out.println("用户输入账号正确,登录成功!");
//关闭登陆界面
this.setVisible(false);
new GameJFrame();
} else {
System.out.println("用户名或密码错误");
showDialog("用户名或密码错误");
String code = CodeUtil.Create(5);
rightCode.setText(code);
}
}
//更换验证码
if (m.getSource() == rightCode) {
System.out.println("更换验证码!");
String code = CodeUtil.Create(5);
rightCode.setText(code);
}
//进入注册页面
if (m.getSource() == enrollButton) {
System.out.println("用户注册");
this.dispose();
new RegisterJFrame();
}
}
//鼠标长按监听
@Override
public void mousePressed(MouseEvent m) {
if (m.getSource() == loginButton) {
loginButton.setIcon(new ImageIcon(path + "登录按下.png"));
} else if (m.getSource() == enrollButton) {
enrollButton.setIcon(new ImageIcon(path + "注册按下.png"));
} //显示查看密码
else if (m.getSource() == seelabel) {
seelabel.setIcon(new ImageIcon(path + "显示密码按下.png"));
passwordField.setEchoChar((char) 0);
}
}
//鼠标松开监听
@Override
public void mouseReleased(MouseEvent m) {
if (m.getSource() == loginButton) {
loginButton.setIcon(new ImageIcon(path + "登录按钮.png"));
} else if (m.getSource() == enrollButton) {
enrollButton.setIcon(new ImageIcon(path + "注册按钮.png"));
} else if (m.getSource() == seelabel) {
seelabel.setIcon(new ImageIcon(path + "显示密码.png"));
passwordField.setEchoChar('*');
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
CodeUtil.java——验证码生成类
package com.itheima.ui;
//验证码生成
import java.util.Random;
public class CodeUtil {
public static String Create(int n){
String code = "";
Random r = new Random();
for (int i = 0; i < n; i++) {
//随机生成三个数字
int type =r.nextInt(3);
switch (type){
case 0:
//大写字符
//A-Z
char ch = (char)(r.nextInt(26)+65);//转换为大写字符
code += ch;
break;
case 1:
//小写字符
// a-z
char ch1 = (char)(r.nextInt(26)+97);
code += ch1;
break;
case 2:
//数字字符
code +=r.nextInt(10);
break;
}
}
return code;
}
}
UserInfo——用户类
package com.itheima.ui;
//用户信息类
public class UserInfo {
private String name;
private String paw;
public UserInfo(String name, String paw) {
this.name = name;
this.paw = paw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPaw() {
return paw;
}
public void setPaw(String paw) {
this.paw = paw;
}
}
2.注册
RegisterJFrame.java——主界面
package com.itheima.ui;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class RegisterJFrame extends JFrame implements MouseListener {
//跟注册相关的代码,都写在这个界面中
String path = "p144--code\\image\\register\\";
//初始化对象
JTextField registeruser = new JTextField();
JPasswordField registerpaw = new JPasswordField();
JPasswordField registerpaw2 = new JPasswordField();
JButton registerbutton = new JButton();
JButton returnbutton = new JButton();
public RegisterJFrame(){
//初始化界面
initJFrame();
//初始化页面
initview();
}
//初始化界面
private void initJFrame() {
this.setSize(480,500);
//设置界面的标题
this.setTitle("拼图注册界面");
//设置界面置顶
this.setAlwaysOnTop(true);
//设置界面居中
this.setLocationRelativeTo(null);
//设置关闭模式
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//让显示显示出来,建议写在最后
//取消内部默认布局
this.setLayout(null);
this.setVisible(true);
}
//初始化页面
private void initview() {
JLabel registerUser = new JLabel(new ImageIcon(path + "注册用户名.png"));
registerUser.setBounds(100, 140, 80, 17);
this.getContentPane().add(registerUser);
//添加输入框
registeruser.setBounds(195, 134, 200, 30);
this.getContentPane().add(registeruser);
//添加密码标签
JLabel PawjLabel = new JLabel(new ImageIcon(path + "注册密码.png"));
PawjLabel.setBounds(100, 200, 80, 17);
this.getContentPane().add(PawjLabel);
//添加注册输入框
registerpaw.setBounds(195, 195, 200, 30);
this.getContentPane().add(registerpaw);
JLabel PawjLabel2 = new JLabel(new ImageIcon(path + "再次输入密码.png"));
PawjLabel2.setBounds(70, 255, 120, 20);
this.getContentPane().add(PawjLabel2);
//添加再次注册输入框
registerpaw2.setBounds(195, 250, 200, 30);
this.getContentPane().add(registerpaw2);
//注册按钮
registerbutton.setBounds(123, 310, 128, 47);
ImageIcon icon1 = new ImageIcon(path + "注册按钮.png");
registerbutton.setIcon(icon1);
//去除按钮的边框
registerbutton.setBorderPainted(false);
//去除按钮的背景
registerbutton.setContentAreaFilled(false);
registerbutton.addMouseListener(this);
this.getContentPane().add(registerbutton);
//设置重置按钮
returnbutton.setBounds(256, 310, 128, 47);
ImageIcon icon2 = new ImageIcon(path + "重置按钮.png");
returnbutton.setIcon(icon2);
//去除按钮的边框
returnbutton.setBorderPainted(false);
//去除按钮的背景
returnbutton.setContentAreaFilled(false);
returnbutton.addMouseListener(this);
this.getContentPane().add(returnbutton);
JLabel back = new JLabel(new ImageIcon(path + "background.png"));
back.setBounds(0, 0, 470, 390);
this.getContentPane().add(back);
}
//弹窗设置
public void showDialog(String str) {
JDialog dialog = new JDialog();
dialog.setSize(180, 150);
//让弹框置顶
dialog.setAlwaysOnTop(true);
//让弹框居中
dialog.setLocationRelativeTo(null);
//弹框不关闭永远无法操作下面的界面
dialog.setModal(true);
JLabel warning = new JLabel(str);
//让显示的文字居中
warning.setHorizontalAlignment(JLabel.CENTER);
warning.setBounds(0, 0, 200, 150);
dialog.getContentPane().add(warning);
//让弹框展示出来
dialog.setVisible(true);
}
@Override
public void mouseClicked(MouseEvent m) {
if (m.getSource() == registerbutton){
String name = registeruser.getText();
String paw = registerpaw.getText();
String paw2 = registerpaw2.getText();
if (name.length() != 0 && paw.length() != 0 && paw2.length() != 0) {
if(registerpaw.getText().equals(registerpaw2.getText())) {
System.out.println("用户注册成功!");
for (UserInfo userInfo : LoginJFrame.userInfoArrayList) {
System.out.println("当前用户信息:"+userInfo.getName()+" "+userInfo.getPaw());
}
LoginJFrame.userInfoArrayList.add(new UserInfo(name, paw));
System.out.println("用户添加成功!");
this.dispose();
new LoginJFrame();
}else {
showDialog("两次输入的密码不一样!");
}
}else {
showDialog("注册内容不能为空!");
}
} else if (m.getSource() == returnbutton) {
System.out.println("重置用户注册信息");
registeruser.setText("");
registerpaw.setText("");
registerpaw2.setText("");
}
}
@Override
public void mousePressed(MouseEvent m) {
if (m.getSource() == registerbutton){
registerbutton.setIcon(new ImageIcon(path + "注册按下.png"));
}else if (m.getSource() == returnbutton){
returnbutton.setIcon(new ImageIcon(path + "重置按下.png"));
}
}
@Override
public void mouseReleased(MouseEvent m) {
if (m.getSource() == registerbutton){
registerbutton.setIcon(new ImageIcon(path + "注册按钮.png"));
}else if (m.getSource() == returnbutton){
returnbutton.setIcon(new ImageIcon(path + "重置按钮.png"));
}
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
3.游戏
GameJFrame——游戏主界面
package com.itheima.ui;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
public class GameJFrame extends JFrame implements KeyListener, ActionListener {
//JFrame 界面,窗体
//子类呢?也表示界面,窗体
//规定:GameJFrame这个界面表示的就是游戏的主界面
//以后跟游戏相关的所有逻辑都写在这个类中
//创建一个二维数组
//目的:用来管理数据
//加载图片时,会根据二维数组的数据进行加载
int[][]data=new int[4][4];
//记录空白方块在二维数组中的位置
int x = 0;
int y = 0;
//定义一个变量,记录当前展示图片的路径
String path = "p144--code\\image\\animal\\animal3\\";
String rootPath = "p144--code\\image\\";
//定义一个二维数组,存储正确的数据
int[][] win ={
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 0}
};
//定义变量 用来统计步数
int step = 0;
//创建选项下面的条目对象
JMenuItem girl = new JMenuItem("美女");
JMenuItem animal = new JMenuItem("动物");
JMenuItem sport = new JMenuItem("运动");
JMenuItem replayItem = new JMenuItem("重新游戏");
JMenuItem reLoginItem = new JMenuItem("重新登录");
JMenuItem closeItem = new JMenuItem("关闭游戏");
JMenuItem accountItem = new JMenuItem("公众号");
public GameJFrame(){
//初始化界面
initJFrame();
//初始化菜单
initJMenuBar();
//初始化数据(打乱)
initDate();
//初始化图片
initImage();
//让显示显示出来,建议写在最后
this.setVisible(true);
}
//初始化数据(打乱)
private void initDate() {
//1.定义一个一维数组
int[] tempArr={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//2.打乱数组中的数据的顺序
//遍历数组,得到每一个元素,拿着每一个元素跟随机索引上的数据进行交换
Random r=new Random();
for (int i = 0; i < tempArr.length; i++) {
//获取到随机索引
int index = r.nextInt(tempArr.length);
//拿着遍历到的每一个数据,跟随机索引上的数据进行交换
int temp = tempArr[i];
tempArr[i]=tempArr[index];
tempArr[index]=temp;
}
//3.给二维数组添加数据
//遍历一维数组tempArr得到每一个元素,把每一个元素依次添加到二维数组当中
for (int i = 0; i < tempArr.length; i++) {
if (tempArr[i]==0){
x=i/4;
y=i%4;
}
data[i / 4][i % 4] = tempArr[i];
}
}
//初始化图片
//添加图片的时候 按照二维数组中管理的数据添加图片
private void initImage() {
//清空原本已经出现的所有图片
this.getContentPane().removeAll();
if (victory()){
//显示胜利的图标
JLabel winJLabel = new JLabel(new ImageIcon("p144--code\\image\\win.png"));
winJLabel.setBounds(203,283,197,73);
this.getContentPane().add(winJLabel);
}
//显示计步器
JLabel stepCount = new JLabel("步数"+step);
stepCount.setBounds(50,30,100,20);
this.getContentPane().add(stepCount);
//路径分为两种:
//绝对路径:一定是从盘符开始的。 C:\ D;\
//相对路径:不是从盘符开始的 aaa\\\bbb 相对当前项目而言
//再当前项目下,去找aaa文件夹,里面再找bbb文件夹
//细节:
//先加载的图片在上方,后加载的图片在下方 (背景图片要最后在加载)
//外循环---
for (int i = 0; i < 4; i++) {
//内循环---
for (int j = 0; j < 4; j++) {
//获取当前要加载图片的序号
int num=data[i][j];
//创建一个JLabel的对象(管理容器)
JLabel jLabel = new JLabel(new ImageIcon(path+num+".jpg"));
//指定图片位置
jLabel.setBounds(105*j+83,105*i+134,105,105);
//给图片添加边框
//0:让图片凸起来
//1:让图片凹下去
jLabel.setBorder(new BevelBorder(BevelBorder.LOWERED));
//把管理容器添加到界面中
this.getContentPane().add(jLabel);
}
}
//添加背景图片
JLabel background = new JLabel(new ImageIcon("p144--code\\image\\background.png"));
background.setBounds(40,40,508,560);
//把背景图片添加到界面
this.getContentPane().add(background);
//刷新一下界面
this.getContentPane().repaint();
}
private void initJMenuBar() {
//创建整个菜单对象
JMenuBar jMenuBar = new JMenuBar();
//创建菜单最上面的两个选项的对象(功能 关于我们)
JMenu functionJMenu = new JMenu("功能");
JMenu aboutJMenu = new JMenu("关于我们");
JMenu changeImage = new JMenu("更换图片");
//将每一个选项下面的条目去添加到选项中
functionJMenu.add(changeImage);
functionJMenu.add(replayItem);
functionJMenu.add(reLoginItem);
functionJMenu.add(closeItem);
changeImage.add(girl);
changeImage.add(animal);
changeImage.add(sport);
aboutJMenu.add(accountItem);
//给条目绑定事件
replayItem.addActionListener(this);
reLoginItem.addActionListener(this);
closeItem.addActionListener(this);
accountItem.addActionListener(this);
girl.addActionListener(this);
animal.addActionListener(this);
sport.addActionListener(this);
//将菜单里面的两个选项添加到菜单当中
jMenuBar.add(functionJMenu);
jMenuBar.add(aboutJMenu);
//给整个界面设置菜单
this.setJMenuBar(jMenuBar);
}
private void initJFrame() {
//设置界面的宽高
this.setSize(603,680);
//设置界面的标题
this.setTitle("拼图单机版 v1.0");
//设置界面置顶
this.setAlwaysOnTop(true);
//设置界面居中
this.setLocationRelativeTo(null);
//设置关闭模式
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//取消默认的居中位置,只有取消了才会按照XY轴的形式添加组件
this.setLayout(null);
//给整个界面添加键盘监听事件
this.addKeyListener(this);
}
@Override
public void keyTyped(KeyEvent e) {
}
//按下不松时会调用这个方法
@Override
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if (code == 65){
//把界面中的所有的图片全部删除
this.getContentPane().removeAll();
//加载第一张完整的图片
JLabel all = new JLabel(new ImageIcon(path+"all.jpg"));
all.setBounds(83,134,420,420);
this.getContentPane().add(all);
//加载背景图片
JLabel background = new JLabel(new ImageIcon("p144--code\\image\\background.png"));
background.setBounds(40,40,508,560);
//把背景图片添加到界面
this.getContentPane().add(background);
//刷新一下界面
this.getContentPane().repaint();
}
}
@Override
public void keyReleased(KeyEvent e) {
//判断游戏是否胜利,如果胜利,此方法需要直接结束,不能再执行下面的移动代码
if (victory()){
//return 含义 :1.返回结果 2.结束方法
return;
}
//对上,下,左,右 进行判断
//左:37 上:38 右:39 下:40
int code = e.getKeyCode();
if (code==37){//左
if (y == 3){
return;
}
data[x][y] = data[x][y+1];
data[x][y+1] = 0;
y++;
//每移动一次,计数器自增一次
step++;
initImage();
}else if (code==38){//上
//把空白方块下方的数字往上移动
//x,y 表示空白方块 x+1,y表示空白方块下方的数字
//边界值3,0 3,1 3,2 3,3
if (x == 3){
return;
}
//把空白方块下方的数字赋值给空白方块
data[x][y] = data[x+1][y];
data[x+1][y] = 0;
x++; //存空白方块位置
step++;
//调用方法按照最新的数字加载图片
initImage();
}else if (code==39){//右
if (y == 0){
return;
}
data[x][y] = data[x][y-1];
data[x][y-1] = 0;
y--;
step++;
initImage();
}else if (code==40){//下
if (x == 0){
return;
}
data[x][y] = data[x-1][y];
data[x-1][y] = 0;
x--;
step++;
initImage();
}else if (code == 65){
initImage();
}else if (code == 87){
data = new int[][]{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 0}
};
initImage();
}
}
public boolean victory(){
for (int i = 0; i < data.length; i++) {
//i : 依次表示二维数组 data 里面的索引
//data[i]:依次表示每一个一维数组
for (int j = 0; j < data[i].length; j++) {
if (data[i][j] != win[i][j]){
//只要有一个数据不一样,则返回false
return false;
}
}
}
//循环结束表示数组遍历比较完毕,全部一样返回true
return true;
}
//鼠标点击监听
@Override
public void actionPerformed(ActionEvent e) {
//获取当前被点击的条目对象
Object obj = e.getSource();
//判断
if (obj == replayItem){//重新游戏
//计步器清零
step = 0;
//再次打乱二维数组中的数据
initDate();
//重新加载图片
initImage();
}else if (obj == reLoginItem){//重新登录
//关闭当前游戏界面
this.setVisible(false);
//打开登录界面
new LoginJFrame();
}else if (obj == closeItem){//关闭游戏
//直接关闭虚拟机
System.exit(0);
}else if (obj == accountItem){//公众号
//创建一个弹框对象
JDialog jDialog = new JDialog();
//创建一个管理图片的容器对象JLabel
JLabel jLabel = new JLabel(new ImageIcon("p144--code\\image\\about.png"));
//设置位置和宽高
jLabel.setBounds(0,0,258,258);
//把图片添加到弹框当中
jDialog.getContentPane().add(jLabel);
//给弹框设置大小
jDialog.setSize(344,344);
//让弹框置顶
jDialog.setAlwaysOnTop(true);
//让弹框居中
jDialog.setLocationRelativeTo(null);
//弹框不关闭则无法操作下面的界面
jDialog.setModal(true);
//让弹框显示出来
jDialog.setVisible(true);
}else if (obj == girl){
//更改路径
Random r = new Random();
String index = String.valueOf(r.nextInt(13)+1);
path = rootPath+"girl\\girl"+index+"\\";
//计步器清零
step = 0;
//再次打乱二维数组中的数据
initDate();
//重新加载图片
initImage();
}else if (obj == animal){
//更改路径
Random r = new Random();
String index = String.valueOf(r.nextInt(8)+1);
path = rootPath+"animal\\animal"+index+"\\";
//计步器清零
step = 0;
//再次打乱二维数组中的数据
initDate();
//重新加载图片
initImage();
}else if (obj == sport){
//更改路径
Random r = new Random();
String index = String.valueOf(r.nextInt(10)+1);
path = rootPath+"sport\\sport"+index+"\\";
//计步器清零
step = 0;
//再次打乱二维数组中的数据
initDate();
//重新加载图片
initImage();
}
}
}
4.启动App类
App.java
import com.itheima.ui.LoginJFrame;
public class App {
public static void main(String[] args) {
//表示程序的启动入口
//如果我们想要开启一个界面,就创建谁的对象就可以了
new LoginJFrame();
//new RegisterJFrame();
//new GameJFrame();
}
}