【Java项目介绍和界面搭建】拼图小游戏——添加图片

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

拼图小游戏

练习

创建主界面1

代码

创建主界面2

菜单制作

在游戏界面中添加菜单

代码

添加图片

游戏主界面添加组件

代码


拼图小游戏

练习

创建主界面1

  • 到idea中创建一个宽603像素,高680像素的游戏主界面
  • 到idea中创建一个宽488像素,高430像素的登录界面
  • 到idea中创建一个宽488像素,高500像素的注册界面

代码

测试类:test ,在这个测试类中,我们直接把三个Java用户图形化界面生成了,但是这样三个功能界面全部都写在同一个main函数里面,对于我们以后的代码修改很不方便。

所以我们这里进行修改下,分别写成单独的类中。

java 复制代码
package ui;

import javax.swing.*;

public class test {
    public static void main(String[] args) {
        //JFrame是JavaBean类描述界面的
        //属性 (宽 高)  行为

        //1.创建一个游戏的主界面
        JFrame gameJFrame = new JFrame();
        gameJFrame.setSize(603,680);//单位是像素
        gameJFrame.setVisible(true);

        //2.创建一个登陆界面
        JFrame loginJFrame = new JFrame();
        loginJFrame.setSize(488,430);
        loginJFrame.setVisible(true);

        //3.创建一个注册界面
        JFrame registerJFrame = new JFrame();
        registerJFrame.setSize(488,500);
        registerJFrame.setVisible(true);


    }
}

注册界面:RegisterJFrame

java 复制代码
package ui;

import javax.swing.*;

public class RegisterJFrame extends JFrame {
    //跟相关注册界面的代码,都写里面
    public RegisterJFrame(){
        this.setSize(488,500);
        this.setVisible(true);
    }

}

登录界面:loginJFrame

java 复制代码
package ui;

import javax.swing.*;

public class loginJFrame extends JFrame {
    //loginJFrame 表示登录界面
    //以后所以跟登录相关的代码,都写里面
    public loginJFrame(){
        this.setSize(488,430);
        this.setVisible(true);
    }

}

游戏界面:GameJFrame

java 复制代码
package ui;

import javax.swing.*;

public class GameJFrame extends JFrame {
    //JFrame 界面,窗体
    //子类呢?也表示界面,窗体
    //规定:GameJFrame这个界面表示的就是游戏的主界面
    //以后跟游戏相关的所有逻辑都写在这个类中
    public GameJFrame(){
        this.setSize(603,680);//单位是像素
        this.setVisible(true);
    }

}

程序的启动入口:App

我们可以把test这个类删掉了,我们可以直接俄利用App这个程序的启动入口,我们需要启动哪个界面,我们直接创建谁就可以了。

java 复制代码
import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;

public class App {
    public static void main(String[] args) {
        //表示程序的启动入口
        //如果我们想要开启一个界面,就创建谁的对象就好了
        new RegisterJFrame();
        new GameJFrame();
        new loginJFrame();
    }
}

创建主界面2

简单初始化界面

java 复制代码
    public RegisterJFrame(){
        this.setSize(488,500);

        //设置界面的标题
        this.setTitle("拼图 注册");

        //设置界面置顶
        this.setAlwaysOnTop(true);

        //设置界面居中
        this.setLocationRelativeTo(null);

        //设置关闭模式
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        //让界面显示出来
        this.setVisible(true);
菜单制作

在游戏界面中添加菜单

代码

游戏界面:GameJFrame

java 复制代码
package ui;

import javax.swing.*;

public class GameJFrame extends JFrame {
    //JFrame 界面,窗体
    //子类呢?也表示界面,窗体
    //规定:GameJFrame这个界面表示的就是游戏的主界面
    //以后跟游戏相关的所有逻辑都写在这个类中
    public GameJFrame(){
        //初始化界面
        initJFrame();

        //初始化菜单
        initJMenuBar();


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








    private void initJMenuBar() {
        //初始化菜单
        //创建整个的菜单对象
        JMenuBar jMenuBar = new JMenuBar();
        //创建菜单上面的两个选项的对象  (功能  关于我们)
        JMenu fuctionJMenu = new JMenu("功能");
        JMenu aboutJMenu = new JMenu("关于我们");
        //创建选项下面的条目对象
        JMenuItem replayItem = new JMenuItem("重新游戏");
        JMenuItem reloginItem = new JMenuItem("重新登录");
        JMenuItem closeItem = new JMenuItem("关闭游戏");

        JMenuItem accountItem = new JMenuItem("公众号");
        //将每一个选项下的条目添加到对应的选项中
        fuctionJMenu.add(replayItem);
        fuctionJMenu.add(reloginItem);
        fuctionJMenu.add(closeItem);

        aboutJMenu.add(accountItem);
        //将菜单里面的两个选项添加到菜单中
        jMenuBar.add(fuctionJMenu);
        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);
    }

}

测试类:App

java 复制代码
import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;

public class App {
    public static void main(String[] args) {
        //表示程序的启动入口
        //如果我们想要开启一个界面,就创建谁的对象就好了
        new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();
    }
}

添加图片

  • 默认添加图片显示在正中央

多写一个初始化图片

java 复制代码
package ui;

import javax.swing.*;

public class GameJFrame extends JFrame {
    //JFrame 界面,窗体
    //子类呢?也表示界面,窗体
    //规定:GameJFrame这个界面表示的就是游戏的主界面
    //以后跟游戏相关的所有逻辑都写在这个类中
    public GameJFrame(){
        //初始化界面
        initJFrame();

        //初始化菜单
        initJMenuBar();

        //初始化图片
        initimage();


        //让界面显示出来,最后写m
        this.setVisible(true);
    }

//---------------------------------- ---------------------
    //初始化图片
    private void initimage() {
    //1.创建一个图片imageicon的对象
        ImageIcon icon = new ImageIcon("E:\\tool\\IDEA-java\\java代码\\routing\\image\\animal\\animal3\\3.jpg");
    //2.创建一个Jlabel的对象(管理容器)
        JLabel JLabel = new JLabel(icon);
    //3.把管理容器添加到界面中
    this.add(JLabel);

    }


    private void initJMenuBar() {
        //初始化菜单
        //创建整个的菜单对象
        JMenuBar jMenuBar = new JMenuBar();
        //创建菜单上面的两个选项的对象  (功能  关于我们)
        JMenu fuctionJMenu = new JMenu("功能");
        JMenu aboutJMenu = new JMenu("关于我们");
        //创建选项下面的条目对象
        JMenuItem replayItem = new JMenuItem("重新游戏");
        JMenuItem reloginItem = new JMenuItem("重新登录");
        JMenuItem closeItem = new JMenuItem("关闭游戏");

        JMenuItem accountItem = new JMenuItem("公众号");
        //将每一个选项下的条目添加到对应的选项中
        fuctionJMenu.add(replayItem);
        fuctionJMenu.add(reloginItem);
        fuctionJMenu.add(closeItem);

        aboutJMenu.add(accountItem);
        //将菜单里面的两个选项添加到菜单中
        jMenuBar.add(fuctionJMenu);
        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);
    }

}

app运行:

java 复制代码
import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;

public class App {
    public static void main(String[] args) {
        //表示程序的启动入口
        //如果我们想要开启一个界面,就创建谁的对象就好了
        new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();
    }
}

游戏主界面添加组件

代码
java 复制代码
    //初始化图片
    private void initimage() {
        //外循环  --把内循环重复执行了4次
        int number = 1;
        for (int i = 0; i < 4; i++) {
            //内循环  --表示在一行添加4张图片
            for (int j = 0; j < 4; j++) {
                //1.创建一个Jlabel的对象(管理容器)
                JLabel JLabel = new JLabel(new ImageIcon("E:\\\\tool\\\\IDEA-java\\\\java代码\\\\routing\\\\image\\\\animal\\\\animal3\\\\" + number +".jpg"));
                //2.指定图片的位置
                JLabel.setBounds(105 * i,105 * j,105,105);
                //3.把管理容器添加到界面中
                this.getContentPane().add(JLabel);
                number++;
            }
        }

App 运行

java 复制代码
import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;

public class App {
    public static void main(String[] args) {
        //表示程序的启动入口
        //如果我们想要开启一个界面,就创建谁的对象就好了
        new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();
    }
}
相关推荐
齐 飞1 分钟前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
饮啦冰美式8 分钟前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu
wowocpp8 分钟前
ubuntu 22.04 server 安装 和 初始化 LTS
linux·运维·ubuntu
Huaqiwill10 分钟前
Ubuntun搭建并行计算环境
linux·云计算
newxtc10 分钟前
【国内中间件厂商排名及四大中间件对比分析】
安全·web安全·网络安全·中间件·行为验证·国产中间件
九圣残炎10 分钟前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
wclass-zhengge12 分钟前
Netty篇(入门编程)
java·linux·服务器
Lign1731414 分钟前
ubuntu unrar解压 中文文件名异常问题解决
linux·运维·ubuntu
童先生15 分钟前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu16 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法