java 开发swt_一个java swt桌面程序开发到打包的总结(1)(收集)

本文总结了使用Java SWT开发桌面程序时遇到的问题及解决方案,包括去除窗口边框并实现拖动,窗口居中,打开文件夹对话框,处理资源路径,以及设置窗口的渐显渐隐效果。
摘要由CSDN通过智能技术生成

--概述与关于swt的问题

一、概述:

几天一直在用金山打字通练习英语(本人英语比较烂),把金山打字能里面的文章全部掠了N遍。打的没意思了,想想怎么能添加一些外部文件,发现金山打字通自带的外部文件导入,太坑了,得往里面手工复制内容。看了下面的图就知道效率不高吧。

363efe7ba8f3626f752112ae0d33045c.png

03366e8ff1c983828a34cf790208f20a.png

我就想自己写一个能够批量导入的小软件,虽然小,可是五脏俱全。(其实主要目的就是想熟悉下java se的开发) 这里主要写一下,这次写程序遇到的问题,的解决方案与注意。以备下次使用! 还是先看下,我的成果吧!

aec304fced91c80cb4de02857416f72d.png

二、关于swt的问题

1,去掉swt窗口的外边框: shell = new Shell(SWT.NO_TRIM);

2,在去掉swt的窗口边框以后,swt窗口是不能拖动的,所以要自己添加事件,能够像正常窗口那样,按住鼠标能手动窗口,放开鼠标窗口移动到鼠标放开的位置。

1),写一个内部内,继承Listener

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 //窗口移动

2 private class ShellMoveListenter implementsListener{3 public voidhandleEvent(Event arg0) {4 switch(arg0.type) {5 caseSWT.MouseDown:6 p.x =arg0.x;7 p.y =arg0.y;8 break;9 caseSWT.MouseMove:10 if (p.x == -1) {11 break;12 }13 Point point =shell.toDisplay(arg0.x, arg0.y);14 shell.setLocation(point.x - p.x, point.y -p.y);15 break;16 caseSWT.MouseUp:17 p.x = -1;18 p.y = -1;19 break;20

21 default:22 break;23 }24 }25 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

2),让shell绑定该件事

1 Listener listener = newShellMoveListenter();2 shell.addListener(SWT.MouseDown, listener);3 shell.addListener(SWT.MouseMove, listener);4 shell.addListener(SWT.MouseUp, listener);

3,设置窗口显示在屏幕中间

48304ba5e6f9fe08f3fa1abda7d326ab.png

//得到屏幕分辨率

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);

48304ba5e6f9fe08f3fa1abda7d326ab.png

4,打开文件夹选项框,并把得到的路径设置到text中

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 //打开文件选项框

2 publicString openFile(String text){3 DirectoryDialog dd=newDirectoryDialog(shell);4 dd.setText(text);5 dd.setFilterPath("SystemDrive");6 dd.setMessage("这个是什么??");7 String selecteddir=dd.open();8 returnselecteddir;9 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

5,外部资源路径问题,比如说背景图片:建议放在项目下面,这样打包时可以不用打包资源文件。我的项目结构如下:

09f9c3352b12e43a2f0fbe4119cf3137.png

1), 不能用:Stringpath=ClassLoader.getSystemResource("res/").getPath()+"bg.jpg";//这个在打包后,会报空指针异常,具体是怎么回事,我不知道。

建议用:path1 = System.getProperty("user.dir"); //得到是项目的根目录。

2),中文中问题:path1=URLDecoder.decode(path1,"UTF-8");//进行转码处理。不然会   报找不到路径异常

6,设置窗口打开与关闭的渐显与渐隐效果

1),打开时:渐显

2),关闭时:渐隐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值