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

目录

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开发的详细教程的,你的肯定,就是我的动力!

 

  • 37
    点赞
  • 194
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
如果您使用 `electron-builder` 打包 Electron 应用时,每次都只生成可执行文件(如 .exe 文件)而不是安装文件,可能是因为您在 package.json 中的配置不正确。 您需要在 `build` 属性中为每个平台指定 `target` 属性来生成相应的安装文件。例如,如果要生成 Windows 安装程序,则需要将 `target` 属性设置为 `nsis` 或 `msi`。以下是一个示例: ``` "build": { "appId": "com.example.myapp", "productName": "My App", "directories": { "output": "dist" }, "win": { "target": "nsis" }, "mac": { "target": ["dmg", "zip"] }, "linux": { "target": ["deb", "rpm"] } } ``` 在上面的示例中,我们为每个平台都指定了一个 `target` 属性,用于指定生成的安装文件类型。例如,对于 Windows 平台,我们将 `target` 属性设置为 `nsis`,这将生成一个 Windows 安装程序。对于 macOS 平台,我们将 `target` 属性设置为 `dmg` 和 `zip`,这将生成一个 macOS 安装程序和一个压缩包。对于 Linux 平台,我们将 `target` 属性设置为 `deb` 和 `rpm`,这将生成一个 Debian 安装文件和一个 RPM 安装文件。 如果您已经正确配置了 `target` 属性,但仍然无法生成安装文件,请检查您的打包命令是否正确。例如,在 Windows 平台上,您可以使用以下命令生成安装程序: ``` electron-builder --win --x64 ``` 这将生成一个 Windows x64 安装程序。 希望这些信息能够帮助您找到问题所在。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JeffHan^_^

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

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

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

打赏作者

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

抵扣说明:

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

余额充值