【Java項目介紹和界面搭建】拼圖小游戲——添加圖片

🍬 博主介紹👨?🎓 博主介紹:大家好,我是 hacker-routing ,很高興認識大家~
?主攻領域:【滲透領域】【應急響應】 【Java】 【VulnHub靶場復現】【面試分析】
🎉點贊?評論?收藏 == 養成習慣(一鍵三連)😋
🎉歡迎關注💗一起學習👍一起討論??一起進步📝文末有彩蛋
🙏作者水平有限,歡迎各位大佬指點,相互學習進步!

目錄

拼圖小游戲

練習

創建主界面1

代碼

創建主界面2

菜單制作

在游戲界面中添加菜單

代碼

添加圖片

游戲主界面添加組件

代碼


拼圖小游戲

練習

創建主界面1

  • 到idea中創建一個寬603像素,高680像素的游戲主界面
  • 到idea中創建一個寬488像素,高430像素的登錄界面
  • 到idea中創建一個寬488像素,高500像素的注冊界面

代碼

測試類:test ,在這個測試類中,我們直接把三個Java用戶圖形化界面生成了,但是這樣三個功能界面全部都寫在同一個main函數里面,對于我們以后的代碼修改很不方便。

所以我們這里進行修改下,分別寫成單獨的類中。

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

package ui;import javax.swing.*;public class RegisterJFrame extends JFrame {//跟相關注冊界面的代碼,都寫里面public RegisterJFrame(){this.setSize(488,500);this.setVisible(true);}}

登錄界面:loginJFrame

package ui;import javax.swing.*;public class loginJFrame extends JFrame {//loginJFrame 表示登錄界面//以后所以跟登錄相關的代碼,都寫里面public loginJFrame(){this.setSize(488,430);this.setVisible(true);}}

游戲界面:GameJFrame

package ui;import javax.swing.*;public class GameJFrame extends JFrame {//JFrame 界面,窗體//子類呢?也表示界面,窗體//規定:GameJFrame這個界面表示的就是游戲的主界面//以后跟游戲相關的所有邏輯都寫在這個類中public GameJFrame(){this.setSize(603,680);//單位是像素this.setVisible(true);}}

程序的啟動入口:App

我們可以把test這個類刪掉了,我們可以直接俄利用App這個程序的啟動入口,我們需要啟動哪個界面,我們直接創建誰就可以了。

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

簡單初始化界面

    public RegisterJFrame(){this.setSize(488,500);//設置界面的標題this.setTitle("拼圖 注冊");//設置界面置頂this.setAlwaysOnTop(true);//設置界面居中this.setLocationRelativeTo(null);//設置關閉模式this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//讓界面顯示出來this.setVisible(true);
菜單制作

在游戲界面中添加菜單

代碼

游戲界面:GameJFrame

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

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的啟動入口//如果我們想要開啟一個界面,就創建誰的對象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

添加圖片

  • 默認添加圖片顯示在正中央

多寫一個初始化圖片

package ui;import javax.swing.*;public class GameJFrame extends JFrame {//JFrame 界面,窗體//子類呢?也表示界面,窗體//規定:GameJFrame這個界面表示的就是游戲的主界面//以后跟游戲相關的所有邏輯都寫在這個類中public GameJFrame(){//初始化界面initJFrame();//初始化菜單initJMenuBar();//初始化圖片initimage();//讓界面顯示出來,最后寫mthis.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運行:

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的啟動入口//如果我們想要開啟一個界面,就創建誰的對象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

游戲主界面添加組件

代碼
    //初始化圖片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 運行

import ui.GameJFrame;
import ui.RegisterJFrame;
import ui.loginJFrame;public class App {public static void main(String[] args) {//表示程序的啟動入口//如果我們想要開啟一個界面,就創建誰的對象就好了new GameJFrame();
//        new RegisterJFrame();
//        new loginJFrame();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714854.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

扼殺網絡中的環路:STP、RSTP、MSTP

目錄 前言&#xff1a; 一、STP&#xff08;Spanning Tree Protocol&#xff09; 1.1 STP功能 1.2 STP應用 二、RSTP&#xff08;Rapid Spanning Tree Protocol&#xff09; 2.1 RSTP功能 2.2 RSTP應用 三、MSTP&#xff08;Multiple Spanning Tree Protocol&#xff0…

Angular 由一個bug說起之四:jsonEditor使用不當造成的bug

一&#xff1a;問題 項目中使用了一個JSON第三方庫&#xff1a; GitHub - josdejong/jsoneditor: A web-based tool to view, edit, format, and validate JSON 當用戶編輯JSON格式的數據&#xff0c;查找替換時&#xff1a; 用戶的期望結果是&#xff1a;$$ 被替換為$$_text&a…

[物聯網] OneNet 多協議TCP透傳

[物聯網] OneNet 多協議TCP透傳 STM32物聯網–ONENET云平臺的多協議接入產品創建 : https://blog.csdn.net/qq_44942724/article/details/134492924 Onenet tcp 透傳 : https://blog.csdn.net/flyme2010/article/details/107086001 tcp服務端測試工具 : http://tcp.xnkiot.com/…

zephyr學習

zephyr內核對象學習 定時器 類似linux的定時器&#xff0c; 可以分別設置第一次到期時間和后續的周期觸發時間&#xff0c; 可以注冊到期回調和停止回調 還有一個計數狀態&#xff0c;用于標記timer到期了多少次 duration&#xff1a;設定timer第一次到期的時間。 period: …

SpringBoot3.2.0整合MyBatis-plus的相關問題及處理方法

SpringBoot3.2.0整合MyBatis-plus的相關問題 文章目錄 SpringBoot3.2.0整合MyBatis-plus的相關問題1. build.gradle2. mybatis-plus整合問題1. 錯誤描述2. 問題分析及解決1. 原因分析2. 解決方式 Springboot3.2.0 GA版發布于 2023-11-24 環境&#xff1a;SpringBoot3.2.0Gradle…

【蛀牙】日常生活如何正確護理牙齒?刷牙、洗牙、補牙

程序員生活指南之 【蛀牙】日常生活如何正確護理牙齒&#xff1f;刷牙、洗牙、補牙 文章目錄 一、日常如何清洗牙齒&#xff1f;——刷牙與洗牙1、牙齒污垢1.1 牙菌斑1.2 軟垢1.3 牙結石1.4 牙齦出血 2、如何刷牙2.1 關于時間2.2 各種工具2.3 巴氏刷牙法 二、定期進行洗牙3、如…

題目 1076: 內部收益率

題目描述: 在金融中&#xff0c;我們有時會用內部收益率IRR來評價項目的投資財務效益&#xff0c;它等于使得投資凈現值NPV等于0的貼現率。換句話說&#xff0c;給定項目的期數T、初始現金流CF0和項目各期的現金流CF1, CF2, ...&#xff0c;CFT&#xff0c;IRR是下面方程的解&…

RISC-V特權架構 - 特權模式與指令

RV32/64 特權架構 - 特權模式與指令 1 特權模式2 特權指令2.1 mret&#xff08;從機器模式返回到先前的模式&#xff09;2.2 sret&#xff08;從監管模式返回到先前的模式&#xff09;2.3 wfi&#xff08;等待中斷&#xff09;2.4 sfence.vma&#xff08;內存屏障&#xff09; …

SpringBoot+Vue+MySQL:裝修管理新架構探索

??計算機畢業編程指導師 ??個人介紹&#xff1a;自己非常喜歡研究技術問題&#xff01;專業做Java、Python、微信小程序、安卓、大數據、爬蟲、Golang、大屏等實戰項目。 ??實戰項目&#xff1a;有源碼或者技術上的問題歡迎在評論區一起討論交流&#xff01; ?? Java、…

FPGA開源項目分享——2D N-Body重力模擬器

?導語 今天繼續康奈爾大學FPGA 課程ECE 5760的典型案例分享——2D N-Body重力模擬器。 &#xff08;更多其他案例請參考網站&#xff1a; Final Projects ECE 5760&#xff09; 1. 項目概述 項目網址 Grav Sim 項目說明 該項目的目標是創建一個用DE1-SOC進行硬件加速的2…

Java面試技巧

一、面試前準備 復習基礎知識&#xff1a;深入理解Java核心概念&#xff0c;如JVM、JDK、JRE等。熟悉Java基本語法、面向對象編程、異常處理、集合類、IO流等。同時&#xff0c;對Java的新特性&#xff0c;如Lambda表達式、Stream API等也要有所了解。強化算法和數據結構&…

簡易內存池2 - 華為OD統一考試(C卷)

OD統一考試&#xff08;C卷&#xff09; 分值&#xff1a; 200分 題解&#xff1a; Java / Python / C 題目描述 請實現一個簡易內存池,根據請求命令完成內存分配和釋放。 內存池支持兩種操作命令&#xff0c;REQUEST和RELEASE&#xff0c;其格式為: REQUEST請求的內存大小 …

Redis 【1】—— 安裝 與 配置

Redis 【1】—— 安裝 與 配置 一、安裝 與 配置&#xff08;一&#xff09;使用 yum 安裝&#xff08;二&#xff09;創建符號鏈接1. 軟鏈接2. 相關指令 &#xff08;三&#xff09;修改配置文件&#xff08;四&#xff09;Redis 的啟停 一、安裝 與 配置 &#xff08;一&…

Java的強引用、軟引用、弱引用和虛引用詳解。

Java的強引用、軟引用、弱引用和虛引用 1. 強引用2. 軟引用3. 弱引用4. 虛引用 總結 Java的強引用、軟引用、弱引用和虛引用可以用來標識GC時判斷對象是否達到回收的條件&#xff0c;下面結合Java代碼看看這四類引用吧。 1. 強引用 是最普通的引用方式&#xff0c;通過new關鍵…

外貿業務員沒客戶的7大原因+解決辦法!

業務員沒有客戶&#xff0c;就是無源之水&#xff0c;無本之木&#xff0c;這自然也就沒有業績。那些吃空餉的業務員&#xff0c;遲早會拖垮公司。所以不管是什么原因導致的業務員沒客戶&#xff0c;都要一一查驗清楚。七個業務員沒有客戶的原因&#xff0c;七種對策&#xff0…

華為數通方向HCIP-DataCom H12-821題庫(多選題:21-40)

第21題 管理員在配置 VRRP 時,下面哪些不是必須配置的? A.搶占模式 B.搶占延時 C.虛擬IP 地址 D.虛擬路由器的優先級 【參考答案】ABD 【答案解析】 VRRP的作用之一是提供一個虛擬的IP地址,用作默認網關,用來實現冗余和故障轉移。因此,配置虛擬IP地址是必須的。華為設備vr…

hcip交換

交換機功能 無限的傳輸距離——識別&#xff0c;重寫電信號&#xff08;幀&#xff09;保證信息完整徹底解決了沖突二層單播——MAC地址表提高端口密度 單播地址&#xff1a;MAC地址第一個字節第8位為0 組播地址&#xff1a;MAC地址第一個字節第8位為1 廣播地址&#xff1a;全1…

滲透測試靶場環境搭建

1.DVWA靶場 DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一個用來進行安全脆弱性鑒定的PHP/MySQL Web應用&#xff0c;包含了OWASP TOP10的所有攻擊漏洞的練習環境&#xff0c;旨在為安全專業人員測試自己的專業技能和工具提供合法的環境&#xff0c;同時…

Mybatis批量更新對象數據的兩種方法

說明&#xff1a;遇到一次需要批量修改對象的場景。傳遞一個對象集合&#xff0c;需要根據對象ID批量修改數據庫數據&#xff0c;使用的是MyBatis框架。查了一些資料&#xff0c;總結出兩種實現方式。 創建Demo 首先&#xff0c;創建一個簡單的Demo&#xff1b; &#xff08…

SpringBoot+Jwt+Redis

大致流程&#xff1a; 參照&#xff1a; 史上最全面的基于JWT token登陸驗證_完整的基于jwt的登陸認證-CSDN博客 springboot整合JWTRedis_springboot jwt redis-CSDN博客