【Java】Java GUI制作Windows桌面程序,利用windowbuilder生成界面,使用exe4j打包成可执行文件,使用Inno Setup打包成安装包,超级详细教程

本文介绍了如何在eclipse中通过WindowBuilder插件创建GUI界面,包括项目配置、事件监听和Maven打包,最后使用exe4j和InnoSetup进行程序打包以便跨平台运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.GUI插件

1.1 下载GUI绘制插件

1.2 eclipse中配置windowbuilder插件

2.绘制GUI界面

2.1 建立一个GUI的项目

3.配置Maven项目

3.1新建一个Maven项目

4.GUI事件监听

4.1 按钮监听事件

4.2复选框状态改变事件

5.程序打包

6.使用exe4j将程序打包成可执行文件

6.1 下载exe4j

7.配置Java环境,使用Inno Setup将程序打包成安装包,任意电脑均可安装使用


1.GUI插件

使用IDEA的朋友们,可能比较头疼了,为什么这里要去下载eclipse的插件,IDEA里面没有吗?其实是有的,但是都是要付费使用的,不得已,我们只有使用eclipse来帮助我们绘制GUI的操作了,GUI界面生成之后,后面的逻辑代码编写,我们还是会在IDEA里面操作。

1.1 下载GUI绘制插件

下载地址:windowbuilder下载

点击link 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

点击下载,从外网下载,速度可能比较慢,建议使用迅雷下载。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

1.2 eclipse中配置windowbuilder插件

eclipse的安装教程我这里就不赘述了。。。。。。

打开eclipse

选择Help -> Install New Software...

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 点击Add -> 选择Archive -> 选中刚刚下载好的压缩包 -> 选择selectAll -> 然后点击Next,直到Finish

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 

2.绘制GUI界面

2.1 建立一个GUI的项目

File -> New -> Project -> WindowBuilder -> SWT Designer -> SWT/JFace Java Project

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_19,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_15,color_FFFFFF,t_70,g_se,x_16

 我这里建了一个取名为test,打开项目在src的包下面新建 -> Other -> WindowBuilder -> Swing Designer -> JFrame 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_15,color_FFFFFF,t_70,g_se,x_16

 我这里取名为MyJFrame,打开之后,可以看到下面的样子

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 注意在代码的下方有一个Design选项,点进去之后,就可以开始图形化编辑GUI界面了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 这里就可以拖动我们的组件,把界面拖动成你想要的样子了

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 再点击下方的Source选项返回我们的代码界面,其实就可以发现,我们的每次拖动,这个插件都直接给我们生成了代码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 在代码里面运行一下main方法,就可以看到这个程序在Windows中实际的样子啦!!!

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 接下来,我们就要往里面写一点交互的操作了呦!开始使用我们IDEA来操作了。如果习惯了使用eclipse的同学,可以继续使用eclipse,我比较喜欢使用IDEA。

3.配置Maven项目

这里和大家说一下,我做的这个东西,是我们公司的一个实际的项目,所以内容多了一点,如果大家只是学习,没必要把内容弄的这么满,知道怎么回事就好。

3.1新建一个Maven项目

新建一个maven项目,然后把刚刚的插件为我们生成的内容全部复制过来。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

我这里做了一点小小的封装

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 然后把刚刚插件里面的main方法里面的内容,放到我们Maven项目的主类中来

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

在Maven项目的主类里面启动一下试试,确保运行后也可以看到GUI的界面

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

4.GUI事件监听

如果你这里画了按钮和输入框,就要使用监听,判断什么时候按钮被点击了,获取文本框中的内容等等。

4.1 按钮监听事件

JTextField textField1 = new JTextField();

//按钮对象
JButton button1= new JButton("登陆");
JButton button2= new JButton("重置");

ActionListener aListener = new ActionListener() {
    @Override
    // 每当点击按钮,单选框会触发该方法
    public void actionPerformed(ActionEvent e) {
        //多个按钮可以使用下面方法进行判断
        //这里的button1和button2 就是按钮的对象
        if(e.getSource().equals(button1)){
            // 获取textField1中输入的内容
            String str = textField1.getText(); 
            System.out.println(str);
        }
        if(e.getSource.equals(button2)){
            // do something
        }
    }

}

4.2复选框状态改变事件

JCheckBox checkBox = new JCheckBox("这是一个复选框")

ItemListener item = new ItemListener(){
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getSource().equals(checkBox)){
                    System.out.println("复选框状态改变了!")
                }
            }
        };

如果你们还有一些其他特殊的业务,可以自己查查看Swing的其他事件,这里不做赘述了....

5.程序打包

注意:这里注意一下,我们使用的maven项目,如果你的项目里面引用了第三方的jar包,pom.xml中需要加一个插件 maven-assembly-plugin ,这个插件里面有一个重要的配置项,就是jar-with-dependencies 这个插件的作用是将你项目依赖的第三方的jar里面的内容全部都打到jar包中。没有使用第三方jar的可以忽略。

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass></mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

通过Maven将项目打成Jar

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

会有两个Jar,注意jar包的后缀是带jar-with-dependencies的,如果没有使用第三方的jar包,就普通的jar就好

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_13,color_FFFFFF,t_70,g_se,x_16

6.使用exe4j将程序打包成可执行文件

6.1 下载exe4j

下载地址:exe4j下载

6.2 exe4j的使用

我们先在桌面建立一个test文件夹,然后将我们刚刚生成的jar包复制到里面

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 1. 打开exe4j,进入Project t ype,选中'JAR' in 'EXE' mode,点击next

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 2.给你的程序写一个简短的名称,选择一下输出的目录,点击next

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 3. 设置生成的exe的名称,设置图标,选择是否允许运行多个程序

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

4.由于我们的电脑现在都是64位的系统,所以我们需要勾选生成64位的exe

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 5.配置java 运行参数,选中jar包

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_15,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

6.配置主类

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 选择程序中的main方法,点击OK

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_15,color_FFFFFF,t_70,g_se,x_16

 7.设置程序的jre版本,我这里都设置成1.8了,可以按照自己电脑的情况来设置

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

8.配置运行的环境

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 这里找到你电脑中的jre的文件夹,将这个文件夹给复制到我们的test文件夹中

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 在exe4j中点击+号,选中这个jre的文件夹

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 将jre的环境移动到最上面

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 接着一路点击next就可以了,我们发现文件夹中已经帮我们生成了一个exe的程序

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 双击打开,看看效果

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 我这里顺便测试了一下我的mysql的驱动包能不能用,发现一切正常。

这里注意哦,可能有些小伙伴已经迫不及待的把这个exe的程序发给别人看了,但是发过去的exe根本打不开。因为我们GUI项目的运行环境是依赖我们刚刚指定的那个jre的文件夹的,所以我们仅仅是把exe这个文件夹发到一台任意的电脑上,是运行不起来的,因为缺少了运行环境,所以我们需要使用下面这个Inno Setup这个工具,把我们的jre环境和exe程序一起打包,这样,无论发送到哪台电脑上都能直接运行了。

7.配置Java环境,使用Inno Setup将程序打包成安装包,任意电脑均可安装使用

7.1 Inno Setup下载

下载地址:Inno Setup下载地址

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

7.2 Inno Setup的使用

1.打开Inno Setup ,选择使用脚本向导创建一个脚本

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 点击下一步

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 2.填写程序名称,程序版本,点击下一步

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

继续点击下一步

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 3.把我们刚刚的test文件夹添加进来

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 点击下一步

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 继续点击下一步,下面三项内容都是非必填

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 下一步

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 语言可以多选

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 选择输出的目录,填写安装程序的名称,图标可选,密码可选

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 点击下一步

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 点击完成

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 选择现在立即编译

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 编译完成之后,就可以看到我们的安装程序啦,无论把这个程序发给哪个小伙伴,安装之后,都可以使用喽!!!

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmVmZkhhbl5fXg==,size_20,color_FFFFFF,t_70,g_se,x_16

 整理不易,如果对你有用的话,希望点赞,评论,收藏+关注哦,我会持续更新Java开发的详细教程的,你的肯定,就是我的动力!

 

<think>嗯,用户想了解用Java开发桌面程序,我得好好整理一下这方面的信息。首先,我需要回忆一下Java桌面开发方面的主要技术和工具。记得Swing和JavaFX是两大GUI库,对吧?不过可能用户对这两个不太了解,需要解释清楚它们的区别和优缺点。 然后,用户可能想知道具体的步骤,比如开发流程、需要哪些工具、有没有推荐的框架或者IDE。比如Eclipse和IntelliJ IDEA都是常用的,可能需要提到。还有构建工具,比如Maven或Gradle,这些在项目管理中很重要。 另外,用户可能关心实际应用案例,比如有哪些成功的桌面应用是用Java开发的,或者学习资源在哪里找。可能需要推荐一些教程或者文档,比如Oracle的官方指南或者JavaFX的文档。 还要考虑到用户可能的疑问,比如Java桌面开发中的优势和劣势。比如跨平台能力是强项,但界面可能不如本地应用流畅,或者启动时间较长的问题。这时候需要客观分析,给出中肯的建议。 可能用户没有明确说,但想知道学习曲线如何,是否需要额外学习其他技术,比如FXML或者CSS来美化界面。这部分在JavaFX中用的比较多,应该提到。 另外,是否需要涉及事件处理、多线程、布局管理器这些核心概念?应该简要说明这些在开发中的重要性,以及如何应用。 还有,部署方式,比如如何打包成可执行的JAR或者使用工具生成安装包,比如Inno Setup或者JPackage,这些工具可能对用户有帮助,需要介绍。 最后,可能用户比较关注现在Java桌面开发的现状,是否还在流行,或者有没有更好的替代方案。这时候可以提到虽然移动和Web应用更热门,但Java在特定领域如企业应用、教育工具中仍有应用,而且JavaFX还在持续更新。 需要确保回答结构清晰,分点说明,让用户一步步了解从选择工具到开发、测试、部署的全过程。同时避免使用过于专业的术语,用易懂的中文解释概念,必要时举例说明。</think>Java开发桌面程序分步骤介绍: 一、核心技术选择 1. GUI工具包 - Swing:传统解决方案,JDK内置组件库 示例:$$JFrame frame = new JFrame("窗口标题");$$ - JavaFX:现代替代方案,支持CSS样式和硬件加速 示例:$$Stage stage = new Stage();$$ 2. 开发框架对比 | 特性 | Swing | JavaFX | |------------|----------------|----------------| | 发布时间 | 1997 | 2008 | | 界面渲染 | CPU渲染 | GPU加速 | | 布局方式 | 布局管理器 | CSS+布局面板 | | 数据绑定 | 需手动实现 | 内置支持 | 二、开发环境搭建 1. 推荐IDE - IntelliJ IDEA(社区版免费) - Eclipse with WindowBuilder插件 2. 依赖管理 使用Maven配置JavaFX依赖示例: ```xml <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>17</version> </dependency> ``` 三、典型开发流程 1. 界面设计 - JavaFX推荐使用Scene Builder可视化设计.fxml文件 - 支持CSS样式定制: $$.button { -fx-background-color: #4CAF50; }$$ 2. 事件处理 ```java button.setOnAction(e -> { System.out.println("按钮被点击"); }); ``` 3. 数据绑定(JavaFX特性) ```java TextField textField = new TextField(); Label label = new Label(); label.textProperty().bind(textField.textProperty()); ``` 四、打包与部署 1. 生成可执行JAR ```bash mvn clean package ``` 2. 使用jpackage创建安装包(JDK14+) ```bash jpackage --input target/ --name MyApp --main-jar myapp.jar ``` 五、优势与局限分析 ✓ 优势: - 跨平台能力(Windows/macOS/Linux) - 丰富的第三方库支持 - 长期维护的生态系统 ✗ 局限: - 原生外观还原度低于Qt等框架 - 安装包体积较大(需携带JRE时) - 3D性能弱于C++方案 六、学习资源推荐 1. 官方文档: - Oracle JavaFX文档:https://openjfx.io 2. 实战教程: - 《JavaFX 8权威指南》 - Codecademy JavaFX课程 3. 社区支持: - JavaFX中文社区(jfxchina.com) - StackOverflow #javafx标签 七、现代扩展方案 1. 跨平台方案: - Gluon Mobile(支持iOS/Android) 2. 混合开发: - 嵌入Chromium(JxBrowser商业库) 3. 云集成: - 通过WebSocket连接云端服务 当前建议:新项目推荐JavaFX+Swing混合使用利用JavaFX的现代特性处理主界面,复杂表格等组件可结合Swing的成熟方案。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值