首页 > 编程语言 >Java拼图小游戏

Java拼图小游戏

时间:2024-08-26 22:22:47浏览次数:8  
标签:Java String 拼图 getContentPane add 小游戏 new JLabel public

登录界面

注册界面

游戏页面

上代码

App.java
import com.ui.GameJFrame;
import com.ui.LoginJFrame;
import com.ui.RegisterJFrame;

public class App {
    public static void main(String[] args) {
        new LoginJFrame();
//        new GameJFrame();
//        new RegisterJFrame();
    }
}
GameJFrame.java
package com.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 = "D:\\Web\\pintuxyx\\image\\animal\\animal3\\";
    String rootPath = "D:\\Web\\pintuxyx\\image";
    //定义一个二维数组,存储正确的数据
    int[][] win ={
            {1,2,3,4},
            {5,6,7,8},
            {9,10,11,12},
            {13,14,15,0}
    };
    //定义变量用来统计部署
    int step = 0;
    //创建选项下面的条目对象
    JMenuItem replayItem = new JMenuItem("重新游戏");
    JMenuItem reLoginItem = new JMenuItem("重新登陆");
    JMenuItem closeItem = new JMenuItem("关闭游戏");
    JMenuItem anItem = new JMenuItem("动物");
    JMenuItem stItem = new JMenuItem("运动");
    JMenuItem grItem = new JMenuItem("美女");
    JMenuItem accountItem = new JMenuItem("公众号");
    public GameJFrame() {
        //初始化界面
        initJFrame();


        //初始化菜单
        initJMenuBar();
        //初始化数据(打乱)
        initDate();
        //初始化图片
        initImage();

        //让界面显示出来
        this.setVisible(true);
    }

    //初始化数据
    private void initDate() {
        //定义一个一维数组
        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;
        }
        //4.给二维数组添加数据
        //遍历一维数组中的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( ) {
        //清空原本已经出现的 所有图片
        System.out.println("Inside initImage method. Path: " + path);
        this.getContentPane().removeAll();
        //创建一个图片的ImageIcon的对象
        //创建一个JLabel的对象(管理容器)
        if (victory()) {
            //显示胜利的图片
            JLabel win = new JLabel(new ImageIcon("D:\\Web\\pintuxyx\\image\\win.png"));
            win.setBounds(203, 283, 197, 73);
            this.getContentPane().add(win);
        }
        JLabel stapCount = new JLabel("步数"+step);
        stapCount.setBounds(50,30,100,20);
        this.getContentPane().add(stapCount);
        //外循环 ---
        for (int i = 0; i < 4; i++) {
            //内循环 ---
            for (int j = 0; j < 4; j++) {
                //获取当前要加载的图片序号
                int num = data[i][j];
                JLabel jLabel = new JLabel(new ImageIcon(path + num + ".jpg"));
                //指定图片的位置
                jLabel.setBounds(105 * j + 84, 105 * i + 134, 105, 105);
//        //把管理容器添加到界面中
//        this.add(jLabel);
                //给图片添加边框
                jLabel.setBorder(new BevelBorder(1));
                this.getContentPane().add(jLabel);
                //添加一次之后number需要自增,表示下一次加载后面一张图片

            }
        }
        //添加背景图片
        //先加载的图片会在上方,后加载的图片会在下方
        JLabel background = new JLabel(new ImageIcon("D:\\Web\\pintuxyx\\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 changJMenu = new JMenu("更换图片");

        //将每一个选项下面的条目添加到选项里面
        functionJMenu.add(changJMenu);
        functionJMenu.add(replayItem);
        functionJMenu.add(reLoginItem);
        functionJMenu.add(closeItem);
        changJMenu.add(anItem);
        changJMenu.add(stItem);
        changJMenu.add(grItem);
        aboutJMenu.add(accountItem);
        //给条目绑定事件
        replayItem.addActionListener(this);
        reLoginItem.addActionListener(this);
        closeItem.addActionListener(this);
        accountItem.addActionListener(this);
        anItem.addActionListener(this);
        stItem.addActionListener(this);
        grItem.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(84, 134, 420, 420);
            this.getContentPane().add(all);
            //添加背景图片
            //先加载的图片会在上方,后加载的图片会在下方
            JLabel background = new JLabel(new ImageIcon("D:\\Web\\pintuxyx\\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;
        }
        int code = e.getKeyCode();
        if (code == 37) {
            System.out.println("向左移动");
            if (y == 3) {
                //修复BUG
                return;
            }
            data[x][y] = data[x][y + 1];
            data[x][y + 1] = 0;
            y++;
            //每移动一次,计数器+1
            step++;
            initImage();
        } else if (code == 38) {
            System.out.println("向上移动");
            if (x == 3) {
                return;
            }
            data[x][y] = data[x + 1][y];
            data[x + 1][y] = 0;
            x++;
            //每移动一次,计数器+1
            step++;
            initImage();
        } else if (code == 39) {
            System.out.println("向右移动");
            if (y == 0) {
                return;
            }
            data[x][y] = data[x][y - 1];
            data[x][y - 1] = 0;
            y--;
            //每移动一次,计数器+1
            step++;
            initImage();
        } else if (code == 40) {
            System.out.println("向下移动");
            if (x == 0) {
                return;
            }
            data[x][y] = data[x - 1][y];
            data[x - 1][y] = 0;
            x--;
            //每移动一次,计数器+1
            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();
        }
    }
    //判断data数组中的数据是否跟win数组中相同
    //如果全部相同,返回true,否则返回false
    public boolean victory(){
        for (int i = 0; i < data.length; i++) {
            for (int j = 0; j < data[i].length; j++) {
                if (data[i][j] != win[i][j]){
                    //只要有一个不一样返回false
                    return false;
                }
            }
        }
        return true;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object obj = e.getSource();
        if (obj == replayItem){
            System.out.println("重新游戏");
            //再次打乱数据
            initDate();
            //计步清零
            step = 0;
            //重新加载图片
            initImage();

        }else if(obj == reLoginItem){
            System.out.println("重新登录");
            //关闭当前界面
            this.setVisible(false);
            //打开登录界面
            new LoginJFrame();
        }else if(obj == closeItem){
            System.out.println("关闭游戏");
            //直接关闭虚拟机
            System.exit(0);
        }else if(obj == accountItem){
            System.out.println("公众号");
            //创建一个弹窗对象
            JDialog jDialog = new JDialog();
            JLabel jLabel = new JLabel(new ImageIcon("D:\\Web\\pintuxyx\\image\\about.jpg"));
            jLabel.setBounds(0,0,390,567);
            jDialog.getContentPane().add(jLabel);
            //给弹窗设置大小
            jDialog.setSize(429,623);
            //弹窗置顶,居中
            jDialog.setAlwaysOnTop(true);
            jDialog.setLocationRelativeTo(null);
            //弹窗不关闭 不能其他操作
            jDialog.setModal(true);
            //让弹窗显示出来
            jDialog.setVisible(true);
        }else if (obj == anItem){
            Random r = new Random();
            String index = String.valueOf(r.nextInt(8)+1);
            path = rootPath+"\\animal\\animal"+index+"\\";
            //计步器清零
            step = 0;
            //再次打乱二维数组中的数据
            initDate();
            //重新加载图片
            initImage();
        } else if (obj == stItem){
            System.out.println("运动");
            Random r = new Random();
            String index = String.valueOf(r.nextInt(10)+1);
            path = rootPath+"\\sport\\sport"+index+"\\";
            //计步器清零
            step = 0;
            //再次打乱二维数组中的数据
            initDate();
            //重新加载图片
            initImage();
        }else if (obj == grItem){
            System.out.println("美女");
            Random r = new Random();
            String index = String.valueOf(r.nextInt(13)+1);
            path = rootPath+"\\girl\\girl"+index+"\\";
            //计步器清零
            step = 0;
            //再次打乱二维数组中的数据
            initDate();
            //重新加载图片
            initImage();
        }
    }
}
LoginJFrame.java
package com.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 = "D:\\Web\\pintuxyx\\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<UserInfo>();
    {
        userInfoArrayList.add(new UserInfo("zhangxin","1314"));
        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) {

    }


}
RegisterJFrame.java
package com.ui;

import com.ui.LoginJFrame;

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class RegisterJFrame extends JFrame implements MouseListener {
    //跟注册相关的代码,都写在这个界面中
    String path = "D:\\Web\\pintuxyx\\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(485,430);

        //设置界面的标题
        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) {

    }
}
CodeUtil.java
package com.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.java
package com.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;
    }



}

标签:Java,String,拼图,getContentPane,add,小游戏,new,JLabel,public
From: https://blog.csdn.net/qq_63126439/article/details/141574899

相关文章

  • 从主流技术架构视角剖析 Java Web 项目的性能测试策略与挑战
    随着互联网应用的不断发展,JavaWeb项目在企业级应用中占据了重要地位。然而,如何在复杂的技术架构下,确保项目的高性能和稳定性,成为了每个开发与测试团队无法回避的难题。今天,我们将从主流技术架构的视角,深度剖析JavaWeb项目的性能测试策略与面临的挑战,为你揭开性能优化的神......
  • 【Java】/* 二叉树 - 底层实现*/
    一、前序遍历-递归/*1.前序遍历-递归*/publicvoidpreOrder(TreeNoderoot){//1.如果根节点为nullif(root==null){return;}//本意:打印树的根,左,右节点//2.打印根节点的值System.out......
  • Java中的异常
    目录一、异常的概念二、异常的分类1.编译时异常2.运行时异常3.错误(Error)三、异常的处理方式1.使用try-catch语句捕获异常: 2.使用try-catch-finally语句: 3.使用throws关键字声明方法可能抛出的异常:四、自定义异常一、异常的概念在Java中,异常是在程序运行过程中......
  • 新Java萝卜影视4.0.5原生源码【完美修复完整版】
    新Java萝卜影视4.0.5原生源码【完美修复完整版】新Java萝卜影视4.0.5原生源码【完美修复完整版】源码介绍新Java萝卜影视4.0.5是一个基于Java语言开发的影视播放应用。该版本在原有基础上进行了多项优化和修复,提升了应用的稳定性和用户体验。源码采用原生Java编写,适合Java开......
  • 基于Java+SpringBoot+Mysql实现高校教务信息系统功能设计与实现二
    一、前言介绍:1.1项目摘要高校教务信息系统课题的提出,主要源于高校日常管理工作的复杂性和重要性。作为高校的基本任务,人才培养离不开教学与管理工作的有效组织和协调。教务管理作为高校日常管理的核心组成部分,涉及教学资源的合理配置、教学过程的科学规划以及教学质量的......
  • 基于Java+SpringBoot+Mysql实现高校教务信息系统功能设计与实现三
    一、前言介绍:1.1项目摘要高校教务信息系统课题的提出,主要源于高校日常管理工作的复杂性和重要性。作为高校的基本任务,人才培养离不开教学与管理工作的有效组织和协调。教务管理作为高校日常管理的核心组成部分,涉及教学资源的合理配置、教学过程的科学规划以及教学质量的......
  • 计算机毕业设计-基于Java+SSM架构的高校毕业生就业管理系统项目开发实战(附源码+论文)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • java在项目中实现个性化定制的数据可视化图表———静态,动态获取数据
    一、Echarts介绍ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。2021年1月26日晚,Apache基金会官方宣布ECharts项目正式毕业。1月28日,EChar......
  • 如何构建KPL比赛在线售票系统——Java SpringBoot与Vue的完美结合
    ......
  • Java 入门指南:初识 Java IO
    JavaIOJavaIO(Input/Output)是Java编程语言中用于处理输入和输出的标准库,它提供了一组类和接口,用于在程序和外部世界(如文件、网络连接、内存等)之间进行数据传输。IO,即in和out,也就是输入和输出,即应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络......