声明:这个小项目是跟着黑马的视频做的

App

package demo;

public class App {

    public static void main(String[] args) {
     // 获取菜单页面
       LoginJFrame loginFrame = new LoginJFrame();
    }
}

GameJFrame

package demo;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.util.Random;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseListener;

public class GameJFrame extends JFrame implements KeyListener{
    //随机生成用于打乱图片的数据
    int[][] data = new int[4][4];
    int[][] win = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0}};
    int step = 0;
    int x = 3;
    int y = 3;
    String start = "D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\animal\\animal3\\";
    public GameJFrame() {
        //初始化界面
        init();
        // 初始化打乱图片的数据
        initData();
       // 初始化菜单
        initJMenuBar();
       //初始化图片
        initImage();
        //显示界面
        this.setVisible(true);
    }

    private void init() {
        //设置界面的宽高
        this.setSize(603,680);
        //设置标题
        this.setTitle("拼图单机版 v1.0");
        // 设置界面置顶
        this.setAlwaysOnTop(true); // 这个就代表如果有多个界面 就按先后顺序来显示界面
        //设置界面居中 显示界面时 是位于界面中间的
        this.setLocationRelativeTo(null);
        //设置页面关闭模式
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 参数是一个接口中的一个常量 这个是3 代表的是如果有多个窗口 只要关闭一个 程序就终止
       //如果不写setLayout 系统会默认调用BoardLayout 这样会忽略setBounds :布局管理器会覆盖手动设置的位置和大小 所以JLable会堆积在中央区域
        this.setLayout(null);
       //添加鼠标监听器事件
        this.addKeyListener(this);

    }
    private void initJMenuBar(){
        /*
        * 初始化一个菜单栏目就要创建一个JMenuBar对象
        * 栏目中有很多选项 一个选项要创建一个JMenu对象
        * 选项中有很多条目,一个条目需要创建一个JMenuItem对象
        *
        *
        * */
        //创建菜单对象
        JMenuBar jMenuBar = new JMenuBar();

        //创建菜单上两个选项
        //创建更换图片菜单项目
        JMenu changepictureJMeun = new JMenu("更换图片");

        JMenu functionJMenu = new JMenu("功能");
        JMenu aboubtJMenu = new JMenu("关于我们");
        //创建选项下的条目对象
        JMenuItem replayItem = new JMenuItem("重新开始");
        JMenuItem SportItem = new JMenuItem("运动");
        //给运动条目添加行为监听器事件
        SportItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //在八张动物图片中随机挑选一张
                Random r = new Random();
                int temp = r.nextInt(10)+1;
                start = "D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\sport\\sport"+temp+"\\";
                step = 0;
                initData();
                initImage();
            }
        });


        JMenuItem AnimalItem = new JMenuItem("动物");
        //给动物条目添加行为监听器
        AnimalItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                //在八张动物图片中随机挑选一张
                Random r = new Random();
                int temp = r.nextInt(8)+1;
                start = "D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\animal\\animal"+temp+"\\";
                step = 0;
                initData();
                initImage();
            }
        });
        // 给重新开始绑定一个行为监听器
        replayItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                initData();
                step = 0;
                initImage();
            }
        });
        JMenuItem reLoginjMenuItem = new JMenuItem("重新登录");
        //给重新登录绑定行为事件
        reLoginjMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                GameJFrame.this.setVisible(false);
                LoginJFrame loginFrame = new LoginJFrame();
            }
        });

        JMenuItem closeItem = new JMenuItem("关闭游戏");
        // 给关闭游戏绑定行为监听器
        closeItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        JMenuItem accountItem = new JMenuItem("公众号");
        //给公众号绑定行为事件
        accountItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //添加一个弹框对象
                JDialog jDialog = new JDialog();
                //创建一个管理图片的容器对象
                JLabel jLabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\about.png"));
                //设置图片管理容器的大小
                jLabel.setBounds(0,0,258,258);
                //把容器添加到弹框中
                jDialog.add(jLabel);
                //设置弹框大小
                jDialog.setSize(344,344);
                //让弹框总是置顶 就是显示在最上层
                jDialog.setAlwaysOnTop(true);
                //让弹框居中
                jDialog.setLocationRelativeTo(null);
                //弹框不关闭 无法操作小面的界面
                jDialog.setModal(true);
                // 让弹框显示
                jDialog.setVisible(true);
            }
        });
        //将条目添加到项目中
        changepictureJMeun.add(SportItem);
        changepictureJMeun.add(AnimalItem);

        functionJMenu.add(changepictureJMeun);

        functionJMenu.add(reLoginjMenuItem);
        functionJMenu.add(replayItem);
        functionJMenu.add(closeItem);

        aboubtJMenu.add(accountItem);


        //将项目添加到菜单中
        jMenuBar.add(functionJMenu);
        jMenuBar.add(aboubtJMenu);
        // 设置整个菜单界面
        this.setJMenuBar(jMenuBar);
    }

//    private void  initData(){
//        int[] arr = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//
//        Random r = new Random();
//        for (int i = 0; i < arr.length; i++) {
//            int index = r.nextInt(arr.length);
//            int temp = arr[i];
//            arr[i] = arr[index];
//            arr[index] = temp;
//        }
//
//        int cnt = 0;
//        for(int i = 0;i < 4;i++){
//            for(int j = 0;j < 4;j++){
//                if(arr[cnt] == 0){
//                    x = cnt % 4;
//                    y = cnt / 4;
//                }
//                data[i][j] = arr[cnt++];
//            }
//        }
//
//    }
    private void  initData(){
    int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0}};
    x = 3;
    y = 3;

    Random r = new Random();
    for(int i = 0;i < 1000;i++){
        int num = r.nextInt(4);
        if(num == 0 && check(x-1,y)){
           //向左
           int temp = arr[x][y];
           arr[x][y] = arr[x-1][y];
           arr[x-1][y] = temp;
           x--;
        }else if(num == 1 && check(x,y-1)){
           //向上
            int temp = arr[x][y];
            arr[x][y] = arr[x][y-1];
            arr[x][y-1] = temp;
            y--;
        }else if(num == 2 && check(x+1,y)){
            //向右
            int temp = arr[x][y];
            arr[x][y] = arr[x+1][y];
            arr[x+1][y] = temp;
            x++;
        }else if(num == 3 && check(x,y+1)){
            //向下
            int temp = arr[x][y];
            arr[x][y] = arr[x][y+1];
            arr[x][y+1] = temp;
            y++;
        }
    }
    int temp = x;
    x = y;
    y = temp;
    data = arr;
    }


    private void initImage(){
      //先加载的图片会在最上面 所以如果要交换图片的话要把所有的图片清空重新加载
        this.getContentPane().removeAll();

        //添加计步的功能
        JLabel StepJlabel = new JLabel("步数:"+this.step);
        StepJlabel.setBounds(50,30,100,20);
        this.getContentPane().add(StepJlabel);

        if(checkIsVictory()){
            JLabel winJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\win.png"));
            winJlabel.setBounds(83+105*1,132+105*3,197,73);
            this.getContentPane().add(winJlabel);
        }

        String end = ".jpg";
        int number = 0;
        for(int h = 0;h < 105*4;h+=105){
            for(int w = 0;w < 105*4;w += 105){
                String path = start + data[number/4][number%4] + end;
                //创建图片对象
                ImageIcon icon = new ImageIcon(path); // 如果没有这个路径 会默认添加一个空白图片
                // 创建JLable对象 (管理容器) 默认是把图片放在界面的中间
                JLabel jLabel = new JLabel(icon);
                jLabel.setBounds(w+83,h+134,105,105);
                //给图片添加边框 0代表凸出来 1代表陷进去的
                jLabel.setBorder(new BevelBorder(1));
                //把管理容器添加到主界面中
                this.getContentPane().add(jLabel); // 如果把JFrame看成一个相框的外框和和玻璃 那getContentPane就是里面放照片的地板  组件(JLabel等):贴在底板上的照片
                number++;
            }
        }
       //添加背景图
        ImageIcon backGround = new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\background.png");
        JLabel jlabel1 = new JLabel(backGround);
        jlabel1.setBounds(38,40,508,560);
        this.getContentPane().add(jlabel1);

        //刷新一下界面
        this.getContentPane().repaint();
    }

    private void getCompletedImage(){

        this.getContentPane().removeAll();

        String path = start + "all.jpg";
        ImageIcon icon = new ImageIcon(path);
        JLabel jlabel = new JLabel(icon);
        jlabel.setBounds(83,132,420,420);
        this.getContentPane().add(jlabel);

        ImageIcon backGround = new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\background.png");
        JLabel jlabel1 = new JLabel(backGround);
        jlabel1.setBounds(38,40,508,560);
        this.getContentPane().add(jlabel1);


        this.getContentPane().repaint();

    }

    public void victory(){

        this.getContentPane().removeAll();

        int cnt = 1;
        for(int i = 0;i < 4;i++){
            for(int j = 0;j < 4;j++){
                String path = start + cnt + ".jpg";
                ImageIcon icon = new ImageIcon(path);
                JLabel jlabel = new JLabel(icon);
                jlabel.setBorder(new BevelBorder(1));
                jlabel.setBounds(83+j*105,132+i*105,105,105);
                this.getContentPane().add(jlabel);
                data[i][j] = cnt++;
            }
        }

        x = 3;
        y = 3;

        //添加背景框
        ImageIcon icon = new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\background.png");
        JLabel jlabel = new JLabel(icon);

        jlabel.setBounds(38,40,508,560);
        this.getContentPane().add(jlabel);

        this.getContentPane().repaint();

    }
    //判断是否胜利
    public boolean checkIsVictory(){
        int cnt = 1;
        for(int i = 0;i < 4;i++){
            for(int j = 0; j < 4;j++){
                if(cnt == 16) return true;
                if(data[i][j] != cnt++) return false;
            }
        }
        return true;
    }

    //检查移动是否越界
    public boolean check(int x,int y){
        return x >= 0 && x < 4 && y >= 0 && y < 4;
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {

        int code = e.getKeyCode();
        if((char)code == 'A'){
            getCompletedImage();
        }

    }

    @Override
    public void keyReleased(KeyEvent e) {
        int code = e.getKeyCode();

        if(code == 37 && check(x-1,y)){
            //左
            step++;
            int temp = data[y][x];
            data[y][x] = data[y][x-1];
            data[y][x-1] = temp;
            x--;
            initImage();
            System.out.println("向左移动一格");

       }else if(code == 38 && check(x,y-1)){
           //上
            step++;
            int temp = data[y-1][x];
            data[y-1][x] = data[y][x];
            data[y][x] = temp;
            y--;
            initImage();
            System.out.println("向上移动一格");

       }else if(code == 39 && check(x+1,y)){
           //右
            step++;
            int temp = data[y][x];
            data[y][x] = data[y][x+1];
            data[y][x+1] = temp;
            x++;
            initImage();
            System.out.println("向右移动一格");

       }else if(code == 40 && check(x,y+1)){
           //下
            step++;
            int temp = data[y+1][x];
            data[y+1][x] = data[y][x];
            data[y][x] = temp;
            y++;
            initImage();
            System.out.println("向下移动一格");

        }else if((char)code == 'A'){
            initImage();
        }else if((char)code == 'W'){
            data = win;
            x = 3;
            y = 3;
            initImage();
        }
    }
}

//快捷键的使用
// 快速双击单词 按住Ctrl+</>键
// 能跳转到单词的末尾或者开头
// 按Ctrl+w 能选中这个单词
// 第一次按是选中这个单词 第二次是选中整个表达式 第三次是整个语句 第四次是整个代码块 是逐渐扩大范围

LoginJFrame

package demo;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import demo.User;

public class LoginJFrame extends JFrame implements MouseListener{

    //创建一个用户
    ArrayList<User> users = new ArrayList<>();


    //绑定登录按钮
    JButton loginJButton = new JButton("登录");
    //绑定注册按钮
    JButton registerJButton = new JButton("注册");
    //绑定验证码按钮
    String IdentifyCode = Tool.getIdentifyCode();
    JButton IdentifyCodeJButton = new JButton(IdentifyCode);
    //添加用户名输入框
    JTextField userJtextfield = new JTextField();
    //添加用户名输入框
    JTextField passwordJtextfield = new JTextField();
    // 添加验证码输入框
    JTextField IdentifyJtextfield = new JTextField();

    LoginJFrame(){
        users.add(new User("zhangsan","123456"));
        users.add(new User("lishi","123456"));
       //初始化界面
        init();
       //设置图片
       initImage();
        //显示界面
        this.setVisible(true);
    }
    //初始化界面
    public void init(){
        this.setSize(488,430);
        //设置标题
        this.setTitle("拼图 登录");
        // 设置界面置顶
        this.setAlwaysOnTop(true);
        //设置界面居中
        this.setLocationRelativeTo(null);
        //设置页面关闭模式
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 参数是一个接口中的一个常量 这个是3 代表的是如果有多个窗口 只要关闭 程序就终止

       this.setLayout(null);


    }

    public void initImage(){
        //添加用户名文字
        JLabel userJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\用户名.png"));
        userJlabel.setBounds(116,135,51,19);
        this.add(userJlabel);
       //添加密码文字
        JLabel PasswordJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\密码.png"));
        PasswordJlabel.setBounds(130,195,35,18);
        this.add(PasswordJlabel);
       //添加验证码
        JLabel IdentifyJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\验证码.png"));
        IdentifyJlabel.setBounds(116,250,56,21);
        this.add(IdentifyJlabel);

        userJtextfield.setBounds(195,134,200,30);
        this.add(userJtextfield);

        passwordJtextfield.setBounds(195,195,200,30);
        this.add(passwordJtextfield);

        IdentifyJtextfield.setBounds(195,250,200,30);
        this.add(IdentifyJtextfield);

        loginJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\登录按钮.png"));
        loginJButton.setBounds(133,310,100,40);
        //给按钮添加鼠标监听器
        loginJButton.addMouseListener(this);
        this.add(loginJButton);

        registerJButton.setBounds(256,310,100,40);
        registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\注册按钮.png"));
        //给按钮添加鼠标监听器
        registerJButton.addMouseListener(this);
        this.add(registerJButton);

        //给验证码按钮添加鼠标监听器事件 去掉默认的背景
        IdentifyCodeJButton.setOpaque(false); // 设置不透明为false
        IdentifyCodeJButton.setContentAreaFilled(false); // 设置内容区域不填充
        IdentifyCodeJButton.setBorderPainted(false); //去掉边框
        IdentifyCodeJButton.setBounds(380,250,80,30);
        IdentifyCodeJButton.addMouseListener(this);
        this.add(IdentifyCodeJButton);

        JLabel backgroundJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\background.png"));
        backgroundJlabel.setBounds(0,0,470,390);
        this.getContentPane().add(backgroundJlabel);

    }

    public void getJDialog(String text){
        JDialog jDialog = new JDialog();
        //创建一个管理图片的容器对象
        JLabel jLabel = new JLabel(text);
        //设置图片管理容器的大小
        jLabel.setBounds(0,0,200,100);
        //把容器添加到弹框中
        jDialog.add(jLabel);
        //设置弹框大小
        jDialog.setSize(200,100);
        //让弹框总是置顶 就是显示在最上层
        jDialog.setAlwaysOnTop(true);
        //让弹框居中
        jDialog.setLocationRelativeTo(null);
        //弹框不关闭 无法操作小面的界面
        jDialog.setModal(true);
        // 让弹框显示
        jDialog.setVisible(true);
    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {
        Object o = e.getSource();
        if(o == loginJButton){
            //显示深色的图片
            loginJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\登录按下.png"));
        }else if(o == registerJButton){
           registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\注册按下.png"));
        }

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        Object o = e.getSource();
        if(o == loginJButton){
            String userName = userJtextfield.getText();
            String userPassword = passwordJtextfield.getText();
            String Identify = IdentifyJtextfield.getText();

            if(!Identify.equals(IdentifyCode)){
                loginJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\登录按钮.png"));
                getJDialog("验证码错误");
                return;
            }

            for (int i = 0; i < users.size(); i++) {
                User user = users.get(i);
                if(user.getName().equals(userName) && user.getPassword().equals(userPassword)){
                    System.out.println("登录成功");
                    this.setVisible(false);
                    GameJFrame gameFrame = new GameJFrame();
                    return;
                }
            }
            loginJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\登录按钮.png"));
            getJDialog("密码或者账号错误,登录失败");

        }else if(o == IdentifyCodeJButton){
                IdentifyCode = Tool.getIdentifyCode();
                IdentifyCodeJButton.setText(IdentifyCode);
        }else if(o == registerJButton){
            this.setVisible(false);
            new RegisterJFrame(this);
            registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\注册按钮.png"));
        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}

RegisterJFrame

package demo;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;

public class RegisterJFrame extends JFrame implements MouseListener{

    LoginJFrame loginJFrame;
    //绑定登录按钮
    JButton registerJButton = new JButton("注册");
    //绑定注册按钮
    JButton resetJButton = new JButton("重置");
    //添加注册用户名输入框
    JTextField registerUserJtextfield = new JTextField();
    //添加注册密码输入框
    JTextField registerPasswordJtextfield = new JTextField();
    // 添加再次输入密码输入框
    JTextField repasswordJtextfield = new JTextField();

    RegisterJFrame(LoginJFrame loginJFrame){
        this.loginJFrame = loginJFrame;
        //初始化界面
        init();
        //设置图片
        initImage();
        //显示界面
        this.setVisible(true);
    }
    //初始化界面
    public void init(){
        this.setSize(488,430);
        //设置标题
        this.setTitle("拼图 登录");
        // 设置界面置顶
        this.setAlwaysOnTop(true);
        //设置界面居中
        this.setLocationRelativeTo(null);
        //设置页面关闭模式
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 参数是一个接口中的一个常量 这个是3 代表的是如果有多个窗口 只要关闭 程序就终止

        this.setLayout(null);


    }

    public void initImage(){
        //添加用户名文字
        JLabel registerUserJLabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册用户名.png"));
        registerUserJLabel.setBounds(106,138,79,17);
        this.add(registerUserJLabel);
        //添加密码文字
        JLabel registerPasswordJLabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册密码.png"));
        registerPasswordJLabel.setBounds(115,198,64,16);
        this.add(registerPasswordJLabel);
        //添加验证码
        JLabel IdentifyJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\再次输入密码.png"));
        IdentifyJlabel.setBounds(95,255,96,17);
        this.add(IdentifyJlabel);

        registerUserJtextfield.setBounds(195,134,200,30);
        this.add(registerUserJtextfield);

        registerPasswordJtextfield.setBounds(195,195,200,30);
        this.add(registerPasswordJtextfield);

        repasswordJtextfield.setBounds(195,250,200,30);
        this.add(repasswordJtextfield);



        registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按钮.png"));
        registerJButton.setBounds(133,310,100,40);
        //给按钮添加鼠标监听器
        registerJButton.addMouseListener(this);
        this.add(registerJButton);

        resetJButton.setBounds(256,310,100,40);
        resetJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\重置按钮.png"));
        //给按钮添加鼠标监听器
        resetJButton.addMouseListener(this);
        this.add(resetJButton);


        JLabel backgroundJlabel = new JLabel(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\login\\background.png"));
        backgroundJlabel.setBounds(0,0,470,390);
        this.getContentPane().add(backgroundJlabel);

    }

    public void getJDialog(String text){
        JDialog jDialog = new JDialog();
        //创建一个管理图片的容器对象
        JLabel jLabel = new JLabel(text);
        //设置图片管理容器的大小
        jLabel.setBounds(0,0,200,100);
        //把容器添加到弹框中
        jDialog.add(jLabel);
        //设置弹框大小
        jDialog.setSize(200,100);
        //让弹框总是置顶 就是显示在最上层
        jDialog.setAlwaysOnTop(true);
        //让弹框居中
        jDialog.setLocationRelativeTo(null);
        //弹框不关闭 无法操作小面的界面
        jDialog.setModal(true);
        // 让弹框显示
        jDialog.setVisible(true);
    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {
        Object o = e.getSource();
        if(o == registerJButton){
            //显示深色的图片
            registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按下.png"));
        }else if(o == resetJButton){
            resetJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\重置按下.png"));
        }

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        Object o = e.getSource();
        if(o == registerJButton){
            String userName = registerUserJtextfield.getText();
            String userPassword = registerPasswordJtextfield.getText();
            String reSet = repasswordJtextfield.getText();
            if(!reSet.equals(userPassword)){
                getJDialog("两次密码不一致");
                registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按钮.png"));
                return;
            }

            if(userName.equals("")){
                getJDialog("用户名为空");
                registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按钮.png"));
                return;
            }

            for (int i = 0; i < loginJFrame.users.size(); i++) {
                User temp = loginJFrame.users.get(i);
                if(temp.getName().equals(userName)){
                    getJDialog("用户已存在");
                    registerJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\注册按钮.png"));
                    return;
                }
            }
            //注册成功 就添加用户
            User new_User = new User(userName,userPassword);
            loginJFrame.users.add(new_User);
            getJDialog("注册成功");
            loginJFrame.setVisible(true);
            this.setVisible(false);


        }else if(o == resetJButton){
            registerUserJtextfield.setText("");
            registerPasswordJtextfield.setText("");
            repasswordJtextfield.setText("");
            resetJButton.setIcon(new ImageIcon("D:\\java-learn\\java-project\\day13-code\\day13-code\\image\\register\\重置按钮.png"));
        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}

Tool

package demo;

import java.util.Random;

public class Tool {

    private Tool(){};
    //得到一个五位随机验证码
    public static String getIdentifyCode(){
        char[] arr = new char[5];
        //随机生成一个0-9的数字
        Random r = new Random();
        arr[0] = (char) ('0' + r.nextInt(10));

        //生成四个英文字母
        for(int i = 1;i < 5;i++){
            int temp = r.nextInt(52);
            if(temp < 26){
                arr[i] = (char)('a'+temp);
            }else{
                arr[i] = (char)('A'+temp-26);
            }
        }

        for (int i = 0; i < arr.length; i++) {
            int temp = r.nextInt(arr.length);
            char ch = arr[temp];
            arr[temp] = arr[i];
            arr[i] = ch;
        }
        return new String(arr);
    }

//    public static void main(String[] args) {
//        System.out.println(Tool.getIdentifyCode());
//    }
}

User

package demo;

public class User {

    private String name;
    private String password;

    public User() {
    }

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐