创建项目 可以用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

Java GUI swing 可执行程序 jar (java -jar)idea的更多相关文章

  1. java GUI (课堂笔记)

    关于java GUI Swing组件: JFrame 窗口组件 JLabel 标签 JButton 按钮组件 JTextField 单行文本框 系统控件(JDK自带) 自定义控件(模仿系统控件): 继 ...

  2. 13.JAVA之GUI编程将程序打包jar

    jar基本命令: 目标:将下列MyMenuDemo.java代码打包成jar. 方法如下: 1.把java代码放到d:\myclass目录下. 2.按下快捷键ctrl+r,打开运行窗口,输入cmd后回 ...

  3. java基础十[包、Jar存档文件和部署](阅读Head First Java记录)

    将Java的class文件生成为可执行的Java应用程序.Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序):完全在服务器端远程执行的(例如浏览器来进行存取):介于两者之间的 ...

  4. JAVA学习笔记 -- 包资源文件jar包裹

    初学者GUI,使用Eclipse出口jar包裹,不能显示最小化的图标集(hello.png根文件下的项目文件夹文件).码如下面: import javax.swing.JFrame; import j ...

  5. 用命令行编译java并生成可执行的jar包

    用命令行编译java并生成可执行的jar包 1.编写源代码. 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: ...

  6. java第四节 异常/访问控制/jar包

    /* 异常 异常定义了程序中遇到的非致命的错误,而不是编译时的语法错误,如程序要打开一个不存在的文件 网络连接中断,操作数越界,装载一个不存在的类等 try, catch语句 throws关键字 自定 ...

  7. Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本

    Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...

  8. 在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性

    在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性 Maven 项目生成jar运行时提示“没有主清单属性” 新建了一个Maven的项目,mvn compile和mvn packag ...

  9. 转 Java jar (SpringBoot Jar)转为win可执行的exe程序

    原文链接:http://voidm.com/2018/12/29/java-jar-transform-exe/打包Jar工程 将java项目打包成jar工程,可以是文章以SpringBoot为例po ...

  10. java打包成可执行的jar或者exe的详细步骤

    Java程序完成以后,对于Windows操作系统,习惯总是想双击某个exe文件就可以直接运行程序,现我将一步一步的实现该过程.最终结果是:不用安装JRE环境,不用安装数据库,直接双击一个exe文件,就 ...

随机推荐

  1. Python 使用SQLAlchemy数据库模块

    SQLAlchemy 是用Python编程语言开发的一个开源项目,它提供了SQL工具包和ORM对象关系映射工具,使用MIT许可证发行,SQLAlchemy 提供高效和高性能的数据库访问,实现了完整的企 ...

  2. 14.3 Socket 字符串分块传输

    首先为什么要实行分块传输字符串,一般而言Socket套接字最长发送的字节数为8192字节,如果发送的字节超出了此范围则后续部分会被自动截断,此时将字符串进行分块传输将显得格外重要,分块传输的关键在于封 ...

  3. 【算法】基于hoare快速排序的三种思想和非递归,基准值选取优化【快速排序的深度剖析-超级详细的注释和解释】你真的完全学会快速排序了吗?

    文章目录 前言 什么是快速排序 快速排序的递归实现 快速排序的非递归实现 单趟排序详解 hoare思想 挖坑法 前后指针法 快速排序的优化 三数取中 小区间优化 快速排序整体代码 尾声 前言 先赞后看 ...

  4. PHP的无限极分类

    PHP的无限极分类 一.使用数据表 添加from字段 id name parent_id from 1 中国 0 0 2 广东 1 0,1 3 深圳 2 0,1,2 4 龙华 3 0,1,2,3 5 ...

  5. linux 后台运行进程:& , nohup

    目录 后台执行 & nohup 查看后台运行的命令 jobs ps 关闭当前后台运行的程序 kill 前后台进程的切换与控制 ctrl + z 命令 fg 命令 bg 命令 思考 问题1-为什 ...

  6. mit6.824lab2D-Debug记录

    1.死锁 要提交快照的时候由于没有人取走applyCh通道里面的东西,导致死锁. 具体解释: 2D的测试代码中在日志达到一定大小时会调用snapshot,该函数需要申请rf.mu这个互斥锁.而在提交普 ...

  7. ElasticSearch7.3学习(四)----结合Spring boot进行增删改查和批量(bulk)详解

    1.前置 java api 文档 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.3/java-rest-overvi ...

  8. .NET Core开发实战(第33课:集成事件:使用RabbitMQ来实现EventBus)--学习笔记(上)

    33 | 集成事件:使用RabbitMQ来实现EventBus 这一节我们来讲解如何通过 CAP 组件和 RabbitMQ 来实现 EventBus 要实现 EventBus,我们这里借助了 Rabb ...

  9. Linux-CentOS7登录页面出现Hint: caps lock on,输入大小写字母反了(大小写反转问题)

    问题描述:虚拟机CentOS7,输入大小写字母反了,开启capslock的时候变成小写字母了,关闭则变成大写了... 解决办法:只需要执行:setleds +caps 或 setleds -caps  ...

  10. Linux--如何查看磁盘的IO(top、iostat)

    问题背景: 在性能测试时,虽然测试出了结果,但是我们并不知道瓶颈是源端,还是目标端.例如我做上传和下载性能验证,从Linux服务器上向OSS集群上传和下载文件,虽然测试出了速率,但是并不知道上传是否存 ...