java swt 开发的一个小型应用程序(从设计到打包成软件.exe文件的总结)
来源:互联网 发布:大数据和大数据开发 编辑:程序博客网 时间:2024/06/05 11:43
java swt 开发的一个小型应用程序(从设计到打包成软件.exe文件的总结)
1,背景:这几天一直在用金山打字通练习英语(本人英语比较烂),把金山打字能里面的文章全部掠了N遍。打的没意思了,想想怎么能添加一些外部文件,发现金山打字通自带的外部文件导入,太坑了,得往里面手工复制内空。看了下面的图就知道效率不高吧。
我就想自己写一个能够批量导入的小软件,虽然小,可是五脏俱全。
这里主要写一下,这次写程序遇到的问题,的解决方案与注意。以备下次使用! 还是先看下,我的成果吧!
一,关于swt的问题
1,去掉swt窗口的外边框: shell = new Shell(SWT.NO_TRIM);
2,在去掉swt的窗口边框以后,swt窗口是不能拖动的,所以要自己添加事件,能够像正常窗口那样,按住鼠标能手动窗口,放开鼠标窗口移动到鼠标放开的位置。
1)写一个内部内,继承Listener
//窗口移动private class ShellMoveListenter implements Listener{public void handleEvent(Event arg0) { switch (arg0.type) { case SWT.MouseDown: p.x = arg0.x; p.y = arg0.y; break; case SWT.MouseMove: if (p.x == -1) { break; } Point point = shell.toDisplay(arg0.x, arg0.y); shell.setLocation(point.x - p.x, point.y - p.y); break; case SWT.MouseUp: p.x = -1; p.y = -1; break; default: break; } }}
2),让shell绑定该件事
Listener listener = new ShellMoveListenter();shell.addListener(SWT.MouseDown, listener);shell.addListener(SWT.MouseMove, listener);shell.addListener(SWT.MouseUp, listener);
3,设置窗口显示在屏幕中间:
//得到屏幕分辨率Rectangle area = Display.getDefault().getClientArea();int windowWidth=area.width;int windowHeight=area.height;//得到窗口宽高int width=shell.getBounds().width;int height=shell.getBounds().height;//设置窗口位置 int x=(windowWidth-width)/2;int y=(windowHeight-height)/2;shell.setLocation(x, y);
4,打开文件夹选项框,并把得到的路径设置到text中
//打开文件选项框public String openFile(String text){DirectoryDialog dd=new DirectoryDialog(shell);dd.setText(text);dd.setFilterPath("SystemDrive");dd.setMessage("这个是什么?");String selecteddir=dd.open();return selecteddir;}
button.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent arg0) {String path=openFile("请选择要导入的文件夹目录!");if(path!=null)fileText.setText(path);}});
5,外部资源路径问题,比如说背景图片:建议放在项目下面,这样打包时可以不用打包资源文件。我的项目结构如下:
1) 不能用:Stringpath=ClassLoader.getSystemResource("res/").getPath()+"bg.jpg";//这个在打包后,会报空指针异常,具体是怎么回事,我不知道。
建议用:path1 = System.getProperty("user.dir"); //得到是项目的根目录。
2)中文中问题:path1=URLDecoder.decode(path1,"UTF-8");//进行转码处理。不然会 报找不到路径异常
6,设置窗口打开与关闭的渐显与渐隐效果打开时:渐显
shell.setAlpha(0);shell.open();int i=0;while(shell.getAlpha()<255){shell.setAlpha(i++);try {Thread.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}}
关闭时:渐隐
closeBtn.addSelectionListener(new SelectionAdapter(){//关闭窗口@Overridepublic void widgetSelected(SelectionEvent event) {int i=254;while(!(shell.getAlpha()<=0)){shell.setAlpha(i--);try {Thread.sleep(3);} catch (InterruptedException e2) {e2.printStackTrace();}}shell.close();}});
- java swt 开发的一个小型应用程序(从设计到打包成软件.exe文件的总结)
- java类文件打包成.exe文件的软件-exe4j
- Java应用程序项目打包成exe文件
- JAVA的jar打包成exe文件
- java的jar打包成exe文件
- 将java应用程序打包成独立运行的.exe方法
- 将java应用程序打包成独立运行的.exe方法
- 从Java源代码到打包生成exe文件
- Java 应用程序打包成.exe
- JAVA项目的打包及生成.exe文件或者打包安装软件
- JAVA项目的打包及生成.exe文件或者打包安装软件
- 打包独立的SWT/JFace应用程序
- java应用程序利用Exe4j打包成exe文件
- java应用程序利用Exe4j打包exe文件
- java应用程序利用Exe4j打包exe文件 .
- java应用程序利用Exe4j打包exe文件
- java应用程序打包及生成exe文件
- Java应用程序利用Exe4j打包exe文件
- Tomcat是怎么炼成的?(1)兼一点废话
- Unix环境高级编程(2版)
- 百度空间博客文章下载 [Python 源码]
- 关于MVC的疑惑
- pydbg使用笔记
- java swt 开发的一个小型应用程序(从设计到打包成软件.exe文件的总结)
- XeTeX:使用字体的设置
- 如何生成一个32位的随机数
- zoj 1016 字符串模拟 ~小狼回来做题了!!
- 利用Mysql日志恢复Mysql数据
- 11
- Java与.NET的WebServices相互调用
- hdu1005
- linux grep命令参数及用法详解