• 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

    ---------------------------------------------
    生活的意义并不是与他人争高下,而在于享受努力实现目标的过程,结果是对自己行动的嘉奖。
    ↑面的话,越看越不痛快,应该这么说:

    生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯!
  • 相关阅读:
    《算法竞赛进阶指南》0x12 队列 POJ2259 Team Queue
    《算法竞赛进阶指南》0x11栈 单调栈求矩形面积 POJ2559
    《算法竞赛进阶指南》0x11 栈 求解中缀表达式
    19.职责链模式(Chain of Responsibility Pattern)
    16.观察者模式(Observer Pattern)
    17.解释器模式(Interpreter Pattern)
    15. 迭代器模式(Iterator Pattern)
    14.命令模式(Command Pattern)
    12.代理模式(Proxy Pattern)
    13.模板方法(Template Method)
  • 原文地址:https://www.cnblogs.com/pengchenggang/p/14812880.html
Copyright © 2020-2023  润新知