基于Java开发图形界面程序并打包成exe

最近项目收尾,需要对开发的程序进行程序测试,要撰写用户手册、软件需求规格说明书,软件需求规格范例查看链接

非常之难写(几乎一点项目资料背景都没有,全靠自己百度和瞎猜)、软件需求项目书都没有提,然后我很渣

由于本人是个渣渣,此条博客仅用于自我记录,勿喷,感谢。

 

上面都是水话,正文从这开始

打包Java程序为exe文件

我的程序是在eclipse里面开发的,之前没有打包成exe程序,都是直接运行的。为了项目需要,我整了个exe运行的版本。

参看 https://www.cnblogs.com/jepson6669/p/9211211.html 介绍的十分详细,并且该博客还有如何安装这个软件工具

另外里面-Dfile.encoding=utf-8,其实我eclispse里面默认的是GBK,再加上文件有从CMD命令行里面读取返回的信息,因此我第一次设成utf-8时,软件输出信息栏里面,只要是CMD返回的中文全部乱码了,但是其他都没有,很奇怪,改成-Dfile.encoding=gbk就好了

利用properties文件,让程序从外部读取参数

另外就是我本身有个config类,记录一些需要调用的环境如python.exe的路径,我之前整了个界面可以设置,但是感觉这种信息不应该这么暴露。最后是新建了一个properties文件,然后利用HashMap读取。

文件如下

BASEPATH=H:\\mission\\SeaIceSystem\\Program
Idlrt_PATH=C:\\Program Files\\Exelis\\IDL85\\bin\\bin.x86_64
Python_PATH=D:\\Anaconda3
MRT_PATH=D:\\MRT
Arcpy_Python_PATH=D:\\Python27\\ArcGIS10.2

阅读的代码如下

public void setPath() {
		Map <String,String> map= new HashMap<String, String>();
		map.put("BASEPATH", null);
		map.put("Idlrt_PATH", null);
		map.put("Python_PATH", null);
		map.put("MRT_PATH", null);
		map.put("Arcpy_Python_PATH", null);
		Properties pps = new Properties();
		try {
			pps.load(new FileInputStream(System.getProperty("user.dir")+"\\properties\\Test.properties"));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Enumeration enum1 = pps.propertyNames();//得到配置文件的名字
		while(enum1.hasMoreElements()) {
			String strKey = (String) enum1.nextElement();
			String strValue = pps.getProperty(strKey);
			System.out.println(strKey + "=" + strValue);
			if (map.containsKey(strKey)) {
				map.put(strKey, strValue);
			}
		}
		Program.set_path(jta1,map);
	}

程序从外部读取properties文件和图片

我利用了程序从外部读取图片,想让程序变得好看点,那么文件的拜访如下,properties文件的路径也利用了这个

代码可用,不管是在eclipse还是变成exe都可以使用。

jl1 = new JLabel(new ImageIcon(System.getProperty("user.dir")+"\\images\\Arctic_seaice.jpg"));//之前是"images\\Arctic_seaice.jpg"
        

在eclipse中,工程文件和image文件如下

在打包成exe之后,如下摆放

添加菜单栏——帮助及版权信息,并且为菜单栏按钮添加监听事件,弹窗提示信息,打开PDF文件

JMenuBar jmb;	//菜单条组件
JMenu menu1;//菜单
JMenuItem item1, item2;//菜单项
//创建菜单
		jmb = new JMenuBar();
		menu1 = new JMenu("帮助");
		item1 = new JMenuItem("版权说明");
		item2 = new JMenuItem("用户手册");
		item1.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				JOptionPane.showMessageDialog(null, "版权归属于XXX","版权信息",JOptionPane.PLAIN_MESSAGE); 
			}
		}); 
		item2.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				try {
					Runtime.getRuntime().exec("rundll32 url.dll FileProtocolHandler "  +  System.getProperty("user.dir")+"\\help\\helpcontent.pdf");
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		}); 
		menu1.add(item1);
		menu1.add(item2);
		jmb.add(menu1);
this.setJMenuBar(jmb);

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

就是一只白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值