Java Swing实用桌面小工具开发
——————— .7.11更新 ————————-
步骤8中可能出现的问题,可尝试替换jarbundler为最新版本 jarbundler-2.2.0.jar
——————— 以下为原文内容 ————————-
本文将简述如何用Swing开发简单的桌面小工具。
Java Swing 可以很方便的开发桌面小工具,原理就是用Java运行时调用终端(或cmd)命令。先上个完成后的演示效果:
代码详见:/Liiking/SwingTest
我的第一个Java Swing项目
下面的步骤将详细说明如何创建一个简单的Java Swing项目,并将其打包成Mac或Windows上的可执行程序。
准备工作
首先你需要一个IDE(博主用的是IDEA,就按这个说吧)。然后需要一个将jar包打成 .app(Mac系统可执行程序) 的 jarbundler.jar ,需要打包成Windows上可执行程序 EXE 的话,需要下载 exe4j 这个工具,网上一搜一大把,这里也提供下 Mac版的 exe4j_macos_5_1.tar 和 Windows版的 exe4j_windows_5_0_1.exe 。想直接看打包的可直接跳到步骤8和9 。需要集成jre的 点击这里下载 jre1.8.0.zip 。
1.建项目
任意目录下新建一个Java项目,或者直接open一个目录,然后手动添加src并将目录类型改成Resource即可,IDEA就是这么任性。
2.新建GUI
可视化项目一定要有界面的,直接选中src右键new一个GUI Form,命名为MainGUI,当然你想放进package下也没问题,不过这只是个demo,所以就不分包了。然后会生成两个文件:MainGUI.java和MainGUI.form。
3.布局和逻辑
很明显,MainGUI.java文件里执行逻辑,MainGUI.form里面画页面。随便拖动一个 JLabel 和一个 JButton,我们的demo逻辑是点击button在label上显示Hello World,是的,万年不变的Hello World。添加主程序入口方法,用于创建并展示frame:
public static void main(String[] args) {JFrame frame = new JFrame("SwingTest");JPanel rootPane = new MainGUI().panelContent;frame.setContentPane(rootPane);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();frame.setSize(250, 250);frame.setResizable(false);// 设置窗口不可拉伸frame.setLocationRelativeTo(rootPane);// 居中frame.setVisible(true);}
4.添加一个运行配置
选择Application和Main Class,点击确定。
5.run 运行程序
效果如下:
写到这已经完成了基本的Swing入门。那么如何生成跨平台的jar包呢?
6.将项目打成可执行jar包
可以看到,运行项目后在根目录下生成了out目录,里面是Java文件生成的class文件。可通过菜单-Build-Build Artifact来生成对应的jar包,需要进行一些配置。File-Project Structure-Artifacts-添加-jar-from module 添加一个Artifact配置,选择Main Class 确定应用即可。
7.Build Artifact
Build-Build Artifact-Build之后,将会在out-artifacts目录下生成指定名称的jar包。在Finder中打开,双击jar包运行,效果一致。
8.将jar包打成Mac桌面应用程序 (.app)
正式使用是双击jar包来运行还是感觉怪怪的,可通过jarbundle将jar包打成 .app 的Mac可执行程序。首先将 jarbundle.jar 文件放进IDEA的lib下的ant/lib目录下,在项目根目录下新建Ant目录,将7生成的jar包和配置文件build.xml放入Ant目录下,build.xml如下:
<project name="SwingTest"><taskdef name="jarbundler"classname="net.sourceforge.jarbundler.JarBundler" classpath="lib/jarbundler.jar"/><target name="bundle"><jarbundler dir="release"icon="logo.icns"mainclass="MainGUI"name="SwingTest"jar="SwingTest.jar"/></target></project>
在Ant目录下新建一个release目录,用于存放生成的 .app 文件。
从Ant Build中添加一个配置文件,添加从弹出的选择框里选中Ant目录下的build.xml文件。
添加完成后,双击bundle即可在release目录下生成SwingTest.app文件。
找到应用程序双击即可运行。演示效果如下:
可能遇到的问题:生成app文件后双击没反应。
可能的解决方案:首先确定问题出在哪里,打开app包内容,从MacOS目录下找到JavaApplicationStub这个可执行文件,直接拖到终端运行,查看报错信息。如果错误信息类似下面酱紫,那么恭喜你,此坑已被博主踩平了。 52代表Java 8,51代表Java 7。
[JavaAppLauncher Error] CallStaticVoidMethod() threw an exceptionException in thread "main" java.lang.UnsupportedClassVersionError: MainGUI : Unsupported major.minor version 52.0at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)