[Java]Swing版坦克大戰小游戲項目開發(1)——new出一個窗口


highlight: xcode

theme: vuepress

前言

本系列文章帶領 Java 初學者學習使用 Java 語言結合 Swing 技術以及設計模式開發一款經典小游戲——坦克大戰。通過這個小游戲,你可以學會很多實用的設計模式思想,并且提高你的編碼水平。

熟悉Frame

Frame 類是 Java Swing 技術的核心類,它表示一個窗口。然后開發者可以在這個窗口里面畫各種圖形,添加各種組件。

首先,我們使用 Frame 類來創建一個窗口。我們既然要開發坦克大戰游戲,那么不妨把這個游戲窗口命名為 TankFrame

TankFrame 聲明如下,它繼承了 Frame 類。然后我們重寫構造方法:

```java public class TankFrame extends Frame {

public TankFrame() throws HeadlessException {setVisible(true);setSize(800, 600);setResizable(false);setTitle("War of Tank");setLocationRelativeTo(null);addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});
}

} ```

簡單介紹一下構造方法的代碼。setVisible(true); 表示讓窗口顯示出來,因為默認窗口是隱藏的。setSize 方法表示可以設置窗口的寬高。setResizable 表示是否可以重新拖拽窗口的寬高。這里設置為了 false,表示不可以重新設置寬高。setTitle 表示設置窗口的標題。setLocationRelativeTo 表示設置窗口的相對位置,相對于 null 表示窗口在屏幕正中間。addWindowListener 表示添加窗口監聽器,傳入 WindowAdapter 的構造器,重寫 windowClosing 方法,這樣在點擊窗口的叉號時可以退出進程也就是 JVM。

在主方法里面運行一下看看:

```java public class FrameDemo {

public static void main(String[] args) throws InterruptedException {TankFrame frame = new TankFrame();
}

} ```

image.png

一個簡單的 Swing 窗口就啟動成功了。在下一節,你會了解到窗口的 paintrepaint 方法。通過這兩個方法,你可以在窗口里面繪制圖像。

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

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

相關文章

【java計算機畢設】基于java的奶茶店管理系統的設計與實現MySQL ssm JSP maven項目代碼源碼+文檔

目錄 1項目功能 2項目介紹 3項目地址 1項目功能 【java計算機畢設】奶茶店管理系統java MySQL ssm JSP maven項目源碼代碼萬字文檔 小組設計 2項目介紹 系統功能: 奶茶店管理系統包括管理員、用戶倆種角色。 管理員功能包括個人中心模塊用于修改個人信息和密碼、…

如何在 Ubuntu 14.04 上安裝和配置 Syncthing 來同步目錄

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。 介紹 有許多程序可以在不同計算機之間同步文件。Syncthing 是一個引人注目的新選擇,它跨平臺、完全開源、非常靈活且易于使…

UDP通訊實現

服務器端&#xff1a; 1.獲取套接字 int fd;fdsocket(AF_INET,SOCK_DGRAM,0);if(fd<0){perror("socket");exit(0);} #include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); -domain: 指定通信域&…

Elasticsearch 面試題指南

Elasticsearch 面試題指南 本文檔提供了一份詳細的 Elasticsearch 面試題指南&#xff0c;涵蓋了 Elasticsearch 的核心概念、架構、配置、操作和實際應用場景等方面的內容。希望通過這份指南能夠幫助你在 Elasticsearch 面試中取得成功。 目錄 Elasticsearch 基礎知識 什么…

Retrofit框架源碼深度剖析【Android熱門框架分析第二彈】

Android熱門框架解析&#xff0c;你確定不來看看嗎&#xff1f; OkHttp框架源碼深度剖析【Android熱門框架分析第一彈】 Retrofit框架源碼深度剖析【Android熱門框架分析第二彈】 什么是Retrofit&#xff1f; 準確來說&#xff0c;Retrofit 是一個 RESTful 的 HTTP 網絡請求…

網絡編程:數據包的封裝----libnet庫

使用libnet庫封裝數據包 安裝庫sudo apt-get install libnet-dev 1、數據包內存初始化 libnet_t *libnet_init(int injection_type, char *device, char *err_buf) 2、構造數據包&#xff0c; 由應用層UDP/TCP到MAC層的順序構造 封裝udp數據包的函數 libnet_ptag_t libnet_bui…

Miniconda的常見用法——以Isaacgym為例

1. ubuntu24.04安裝minicondda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh解釋下這段代碼 bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3~/miniconda3/miniconda.sh: 指向Mi…

java中Function、Consumer和Supplier是函數式接口嗎?

是的&#xff0c;在Java中&#xff0c;Function、Consumer 和 Supplier 都是函數式接口&#xff0c;它們都是Java 8引入的java.util.function包中的一部分。這些接口為Lambda表達式提供了類型支持&#xff0c;允許以更簡潔的方式表示方法引用和匿名內部類。 Function<T, R&g…

SHARPNESS-AWARE MINIMIZATION FOR EFFICIENTLY IMPROVING GENERALIZATION--論文筆記

論文筆記 資料 1.代碼地址 https://github.com/google-research/sam https://github.com/davda54/sam 2.論文地址 https://arxiv.org/abs/2010.01412 3.數據集地址 論文摘要的翻譯 在當今嚴重過度參數化的模型中&#xff0c;訓練損失的值很難保證模型的泛化能力。事實上…

代碼隨想錄算法訓練營第三十天|62.不同路徑、63. 不同路徑 II

62.不同路徑 一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角&#xff08;在下圖中標記為 “Finish” &#xff09;。 問總共有多少條不同的路徑&#xff…

軟設之生成器模式

生成器模式的意圖是:將一個復雜的類表示與其構造分離&#xff0c;使得相同的構建過程能夠得出不同的表示 Builder:抽象建造者&#xff0c;為創建一個產品對象各個部件指定抽象接口&#xff0c;把產品的生產過程分解為不同的步驟&#xff0c;從而使具體建造者在具體的建造步驟上…

Java中的對象克隆詳解

Java中的對象克隆詳解 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 對象克隆在Java編程中是一個重要的概念和技術。它允許我們創建一個對象的精確副本&…

MySQL第三次練習

作業三 一 先創建DB abc&#xff0c;創建table student 1、插入一條記錄 2、添加多條記錄 3、添加部分記錄 4、加0.5 5、刪除成績為空的記錄 二 1、創建一個用戶test1使他只能本地登錄擁有查詢student表的權限。 2、查詢用戶test1的權限。 3、刪除用戶test1. 全在一張圖上…

怎樣優化 PostgreSQL 中對日期時間范圍的模糊查詢?

文章目錄 一、問題分析&#xff08;一&#xff09;索引未有效利用&#xff08;二&#xff09;日期時間格式不統一&#xff08;三&#xff09;復雜的查詢條件 二、優化策略&#xff08;一&#xff09;使用合適的索引&#xff08;二&#xff09;規范日期時間格式&#xff08;三&a…

AI學習指南機器學習篇-層次聚類(Hierarchical Clustering)簡介

AI學習指南機器學習篇-層次聚類(Hierarchical Clustering)簡介 在機器學習領域中&#xff0c;層次聚類(Hierarchical Clustering)是一種常見的無監督學習算法&#xff0c;用于將數據集中的樣本分成具有相似特征的群組。層次聚類不需要預先指定要分成的群組數目&#xff0c;而是…

邏輯回歸模型(非回歸問題,而是分類問題)

目錄&#xff1a; 一、Sigmoid函數&#xff1a;二、邏輯回歸介紹&#xff1a;三、決策邊界四、邏輯回歸模型訓練過程&#xff1a;1.訓練目標&#xff1a;2.梯度下降調整參數&#xff1a; 一、Sigmoid函數&#xff1a; Sigmoid函數是構建邏輯回歸模型的重要函數&#xff0c;如下…

免費壓縮pdf文件大小軟件收費嗎?pdf如何壓縮文件大小?12款壓縮應用推薦!

在數字化時代&#xff0c;PDF文件因其跨平臺、格式統一的特點而廣受歡迎。然而&#xff0c;隨著文件內容的增加&#xff0c;PDF文件的大小也逐漸增大&#xff0c;給存儲和傳輸帶來了諸多不便。因此&#xff0c;尋找一款合適的PDF壓縮軟件成為了許多用戶的需求。本文將詳細介紹1…

單調隊列與單調棧(集訓day2)

一、目錄 1、單調隊列 2、單調棧 二、正文 1.單調棧題型&#xff1a; &#xff08;1&#xff09;給出一個數組找出其中每個數左邊第一個比它小&#xff08;大&#xff09;的數字 830. 單調棧 - AcWing題庫 &#xff08;2&#xff09;求直方圖中最大的矩形&…

電子設備常用的膠水有哪些?

目錄 1、502膠水 2、703膠水 3、704膠水 4、AB膠 5、紅膠 6、Underfill 7、導電膠 8、UV膠 9、熱熔膠 10、環氧樹脂膠 11、硅酮膠 12、聚氨酯膠 13、丙烯酸膠 14、丁基膠 1、502膠水 502膠水&#xff0c;也被稱為瞬間膠或快干膠&#xff0c;是一種非常常見的粘合…