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

–概述与关于swt的问题

转载自:http://www.cnblogs.com/overstep/tag/swt/

一、概述:

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

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

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

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

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

二、关于swt的问题

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

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

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

1     //窗口移动
 2     private class ShellMoveListenter implements Listener{
 3         public void handleEvent(Event arg0) {
 4            switch (arg0.type) {
 5                 case SWT.MouseDown:
 6                     p.x = arg0.x;
 7                     p.y = arg0.y;
 8                     break;
 9                 case SWT.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                 case SWT.MouseUp:
17                     p.x = -1;
18                     p.y = -1;
19                     break;
20
21                 default:
22                     break;
23             }
24         }
25     }

2),让shell绑定该件事

1     Listener listener = new ShellMoveListenter();
2     shell.addListener(SWT.MouseDown, listener);
3     shell.addListener(SWT.MouseMove, listener);
4     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中

1     //打开文件选项框
2     public String openFile(String text){
3         DirectoryDialog dd=new DirectoryDialog(shell);
4         dd.setText(text);
5         dd.setFilterPath("SystemDrive");
6         dd.setMessage("这个是什么??");
7         String selecteddir=dd.open();
8         return selecteddir;
9     }

?

1

2

3

4

5

6

7

button.addSelectionListener( new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
String path=openFile( "请选择要导入的文件夹目录!" );
if (path!= null )
fileText.setText(path);
}

});

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

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

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

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

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

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

1),打开时:渐显
? int alpha= 0 ;
shell.setAlpha( 0 );
shell.open();

while (shell.getAlpha()< 255 ){
shell.setAlpha(alpha++);
try {
Thread.sleep( 3 );
} catch (InterruptedException e) {
e.printStackTrace();
}

}

2),关闭时:渐隐
?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
closeBtn.addSelectionListener( new SelectionAdapter(){&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0; //&#x5173;&#x95ED;&#x7A97;&#x53E3;
public void widgetSelected(SelectionEvent event) {
int alpha= 254 ;
while (!(shell.getAlpha()<=< code><code class="java value">0</code><code class="java plain">)){</code><!--=<-->
shell.setAlpha(alpha--);
try {
Thread.sleep( 3 );
} catch (InterruptedException e2) {
e2.printStackTrace();
}
}
shell.close();
}

});

Original: https://www.cnblogs.com/wuhenke/archive/2012/11/24/2786011.html
Author: 无痕客
Title: 一个java swt桌面程序开发到打包的总结(1)(收集)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539574/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 长篇图解java反射机制及其应用场景

    一、什么是java反射? 在java的面向对象编程过程中,通常我们需要先知道一个Class类,然后 new &#x7C7B;&#x540D;()方式来获取该类的对象…

    Java 2023年6月15日
    057
  • 7月8日 学习日记

    HashMap 通过扩容可以减少链表长度 当链表长度超过8时会扩容 当数组长度到达64且链表长度超过8个的时候会转化成红黑树 红黑树 左结点都是比结点小 右结点都是比结点大 先比较…

    Java 2023年6月6日
    066
  • 黑马头条–延迟任务精准发布文章

    1.添加任务 1.1.每次创建文章,就添加到任务中去 文章提交中调用添加任务方法 代码 @Override @Async public void addNewsToTask(Int…

    Java 2023年6月9日
    079
  • 59.你要的全拿走

    dsfsd posted @2022-09-28 08:33 随遇而安== 阅读(5 ) 评论() 编辑 Original: https://www.cnblogs.com/55z…

    Java 2023年6月7日
    076
  • Spring Boot 入门(十三)使用Elasticsearch

    maven <dependency> <groupId>org.elasticsearch.clientgroupId> <artifactId…

    Java 2023年6月5日
    077
  • vim编辑器命令

    参考: https://blog.csdn.net/weixin_44191814/article/details/120091363 vim编辑器 ## Vim基本模式 【对文件…

    Java 2023年6月6日
    098
  • Spring cloud gateway 如何在路由时进行负载均衡

    本文为博主原创,转载请注明出处: 1.spring cloud gateway 配置路由 在网关模块的配置文件中配置路由: 其中lb表示采用了负载均衡,user-server表示服…

    Java 2023年5月30日
    081
  • PyCharm正版(专业版)购买的话多少钱一年?

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年5月29日
    081
  • JAVA PPT

    SDSDFSDF posted @2017-11-29 14:23 麦田HH 阅读(403 ) 评论() 编辑 Original: https://www.cnblogs.com/…

    Java 2023年5月29日
    073
  • 设置 java -jar 的进程显示名称

    我们经常会在Linux服务器上部署我们的java程序,总会使用 的命令在后台运行程序,这样运行后带来的问题就是,当我们想看相应的java进程时,使用jps命令,java进程只会显示…

    Java 2023年6月16日
    053
  • 说说用户线程和守护线程

    什么是用户线程和守护线程? 守护线程是一种特殊的线程,在后台默默地完成一些系统性的服务,比如 垃圾回收线程、 JIT线程都是 守护线程。与之对应的是 用户线程,用户线程可以理解为是…

    Java 2023年6月15日
    070
  • 帮助你更好的理解Spring循环依赖

    网上关于Spring循环依赖的博客太多了,有很多都分析的很深入,写的很用心,甚至还画了时序图、流程图帮助读者理解,我看了后,感觉自己是懂了,但是闭上眼睛,总觉得还没有完全理解,总觉…

    Java 2023年6月5日
    088
  • SpringBoot整合Ehcache3

    前言 公司部门老项目要迁移升级java版本,需要进行缓存相关操作,原框架未支持这部分,经过调研java相关缓存方案大致分为ehcache和redis两种,redis的value最大…

    Java 2023年6月15日
    069
  • web 前端 基础HTML知识点

    B/S(Browser/Server):浏览器实现 优点: 规范、使用方便、本身实现成本低 容易升级、便于维护 缺点: 没有网络,无法使用 保存数据量有限,和服务器交互频率高、耗费…

    Java 2023年6月6日
    0105
  • mysql面试题整理

    1 myisam 和 innodb 引擎的区别 innodb 支持事务,外键,myisam 不支持 innodb 支持 mvcc ,myisam 不支持 innodb 支持表锁、行…

    Java 2023年6月5日
    0112
  • 4.如何避免缓存穿透、缓存击穿、缓存雪崩

    先来看一下缓存穿透,是指业务请求穿过了缓存层,落到持久化存储上。在大多数场景下,我们应用缓存是为了承载前端业务请求,缓存被击穿以后,如果请求量比较大,则会导致数据库出现风险。 以双…

    Java 2023年6月9日
    044
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球