Java GUI swing 可執行程序 jar (java -jar)idea


創建項目 可以用maven

idea設置


into 那個

參考資料

Java 基礎
https://www.liaoxuefeng.com/wiki/1252599548343744/1260454548196032

Intellij Idea開發: 手把手教你Java GUI開發,並且打包成可執行Jar程序
https://blog.csdn.net/mawei7510/article/details/89638126

Intellij Idea開發: 手把手教你將Jar包打包成可執行的exe,可以在無jre環境下運行
https://blog.csdn.net/mawei7510/article/details/89675034

Java Swing 介紹
https://www.runoob.com/w3cnote/java-swing-demo-intro.html

Java Swing 比較詳細的組件介紹
http://c.biancheng.net/view/1206.html

嶄新開始

maven 創建 swing

GroupId && ArtifactId && Version 的含義

groupId 和 artifactId 都是Id的含義,為了表明你在全球的唯一性
groupId 是 A.B.C 的結構
A 是 域的概念 一般為 org、com、cn等等許多,其中org為非營利組織,com為商業組織,個人的話就可以來個cn
B 一般是 公司名稱,要是個人的話,可以來個人的名稱
C 一般是項目名稱, 你當前項目叫什么名稱
artifactId 一般是 groupId 的C,也就是這個項目叫什么名字。定義了當前maven項目在組中唯一的ID。

也就是說 artifactId 就是 maven專用的id名稱。groupId 是 全世界上你的唯一標志名稱。

Version 是版本的意思 例:1.0-SNAPSHOT 。其中1.0是版本號,SNAPSHOT版本代表不穩定、尚處於開發中的版本。而衍生的有Release版本則代表穩定的版本

maven創建項目完成


maven創建的項目 應該可以從右側 maven的工具面板 快速打包

用 Artifacts的方法可以打包成功,記得src 后面的都刪掉,要不不能成功。

maven的package 打包jar

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.4</version>
          <configuration>
            <archive>
<!--              生成的jar中,不要包含pom.xml和pom.properties這兩個文件-->
              <addMavenDescriptor>false</addMavenDescriptor>
              <manifest>
<!--                是否要把第三方jar放到manifest的classpath中-->
                <addClasspath>true</addClasspath>
<!--                生成的manifest中classpath的前綴,因為要把第三方jar放到lib目錄下,所以classpath的前綴是lib/-->
                <classpathPrefix>lib/</classpathPrefix>
<!--                應用的main class-->
                <mainClass>cn.reciter.maven_swing_boot.HelloWorldSwing</mainClass>
              </manifest>
            </archive>
<!--            過濾掉不希望包含在jar中的文件-->
            <excludes>
              <exclude>${project.basedir}/xml/*</exclude>
            </excludes>
          </configuration>
        </plugin>

這個配置 貼到 pom.xml, 正常貼到 build-plugins下面,這個maven生成,自動添加了 pluginManagement,所以就添加到它相應的下面

還有一個坑就是,<artifactId>maven-jar-plugin</artifactId> 這個自動生成的有,記得注釋了。

frame.setSize(300, 300); 不起作用

frame.pack(); 這句話 會自動計算寬高,導致 setSize不起作用

窗口居中顯示

int w = (int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
int h = (int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
System.out.println("w: "+w + " h: "+ h);
int width = 400;
int height = 200;
int x = w/2 - width/2;
int y = h/2 - height/2;
frame.setBounds(x,y,width,height);    //設置窗口大小和位置

6種javaSwing布局

  1. 邊框布局管理器:上右下左中 模式
  2. 流式布局管理器:float模式
  3. 卡片布局管理器:cl.show(cards,"card1") 面板切換模式
  4. 網格布局管理器:Row Col 表格模式
  5. 網格包布局管理器:復雜表格模式
  6. 盒布局管理器:x, y定位模式 不過是單獨的x 和 單獨的y 兩個函數createHorizontalBox() createVerticalBox()

http://c.biancheng.net/view/1212.html

植物大戰僵屍swing版

https://blog.csdn.net/dkm123456/article/details/117047116
https://blog.csdn.net/hollis_chuang/article/details/105630493
https://github.com/llx330441824/plant_vs_zombie_simple.git
通過這個案例可以更細致的看 swing

匿名內部類

https://www.cnblogs.com/dongyl/p/7661696.html
使用匿名內部類:必須繼承一個父類或實現一個接口

實現implements 和 擴展extends 繼承inherit的區別

因為看了一個 子類 實現了父類 然后 直接 new了父類

extends 繼承一個父類的關鍵字

implements是一個類實現一個接口用的 關鍵字 ,他是用來實現接口中定義的抽象方法。
比如:people是一個接口,他里面有say這個方法。
public interface people(){ public say();}
但是接口沒有方法體。只能通過一個具體的類去實現其中的方法體。
比如chinese這個類,就實現了people這個接口。
public class chinese implements people{ public say() {System.out.println("你好!");}}

extends, 可以實現父類,也可以調用父類初始化 this.parent()。而且會覆蓋父類定義的變量或者函數。這樣的好處是:架構師定義好接口,讓工程師實現就可以了。整個項目開發效率和開發成本大大降低。
implements,實現父類,子類不可以覆蓋父類的方法或者變量。即使子類定義與父類相同的變量或者函數,也會被父類取代掉。
這兩種實現的具體使用,是要看項目的實際情況,需要實現,不可以修改implements,只定義接口需要具體實現,或者可以被修改擴展性好,用extends。

記得張老師的視頻中這樣講到:若同時用到 extends 和 implements 的時候,extends 必須放在 implements 關鍵字之前。如 : class A extends B implements C.

class 內部嵌套 class

java Swing游戲開發

老Java程序員花一天時間寫了個飛機大戰,很舒服!
https://blog.csdn.net/dkm123456/article/details/117265359

老Java程序員花2天寫了個連連看,我竟連不過我女兒,我了個去!
https://blog.csdn.net/dkm123456/article/details/117431591

Java swing坦克大戰,我女兒都學會了,你呢?
https://blog.csdn.net/dkm123456/article/details/116609629


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM