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

--概述与关于swt的问题

一、概述:

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

我就想自己写一个能够批量导入的小软件,虽然小,可是五脏俱全。(其实主要目的就是想熟悉下java se的开发)

这里主要写一下,这次写程序遇到的问题,的解决方案与注意。以备下次使用! 还是先看下,我的成果吧!

二、关于swt的问题

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

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

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

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 }

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,设置窗口显示在屏幕中间

//得到屏幕分辨率

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 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 }

button.addSelectionListener(new SelectionAdapter() {

public 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,设置窗口打开与关闭的渐显与渐隐效果

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),关闭时:渐隐

closeBtn.addSelectionListener(new SelectionAdapter(){//关闭窗口

public void widgetSelected(SelectionEvent event) {

int alpha=254;

while(!(shell.getAlpha()<=0)){

shell.setAlpha(alpha--);

try {

Thread.sleep(3);

} catch (InterruptedException e2) {

e2.printStackTrace();

}

}

shell.close();

}

});

java swt shell_一个java swt桌面程序开发到打包的总结(1)相关推荐

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

    --概述与关于swt的问题 一.概述: 几天一直在用金山打字通练习英语(本人英语比较烂),把金山打字能里面的文章全部掠了N遍.打的没意思了,想想怎么能添加一些外部文件,发现金山打字通自带的外部文件导入 ...

  2. Java桌面程序开发——如何开发美观漂亮好看的桌面程序

    大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...

  3. 【转】Java桌面程序开发——如何开发美观漂亮好看的桌面程序

    大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...

  4. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

  5. 一起重新开始学大数据-java篇-DAY01-第一个java代码helloworld

    一起重新开始学大数据-java篇 -DAY01-第一个java代码helloworld 计算机: 按照指定程序,自动高速处理海量数据 计算机组成 硬件和软件组成 硬件: cpu:计算 内存:提供计算资 ...

  6. 桌面应用开发框架 - Windows桌面程序开发工具

    桌面应用开发框架 - Windows桌面程序开发工具 桌面应用开发 桌面应用开发是指基于Windows操作系统开发的应用程序,在Windows环境运行,包括32位\64位的应用程序, 从开发者层面讲, ...

  7. python程序开发_用python进行桌面程序开发

    Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所 ...

  8. windows桌面程序开发_每个软件开发人员都需要的6个Windows桌面实用程序

    windows桌面程序开发 大多数在Windows上工作的软件开发人员都有相当标准的工具集:代码编辑器或IDE: Git或其他版本控制系统: 消息传递客户端(Slack或其克隆之一),等等. 由于大多 ...

  9. 使用python进行桌面程序开发(一)

    Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所 ...

最新文章

  1. 第一部分 Mysql的基础
  2. 2018 年,NLP 研究与应用进展到什么水平了?
  3. swiper实现触摸滑动
  4. c++ 如何将输入的内容输出到文本文件 要建立文本文件嘛_python如何学习
  5. Linux系统安装MySQL5.7,授权远程登陆
  6. java lambda表达式详解_java8新特性-Lambda表达式的详解(从0开始)
  7. Firefox 37原生支持HTML5视频回放功能
  8. 在VirtualBox中安装WindowsXP
  9. 通过shell命名和TexturePacker工具,将.pvr.ccz批量转换为png格式
  10. 在我的网站   Φ十三月网Φ  开站前的宣传,当我是炒作,造势都可以,但是我们要的是有内涵。
  11. oracle dimension的探究(维度)
  12. 金陵五题·并序 刘禹锡
  13. Windows版Redis和Redis Desktop Manager安装
  14. c#使用Flash控件AxShockwaveFlash时,报“未注册类”。
  15. elevation_mapping使用笔记
  16. 2022-9-27 学习笔记
  17. 肯尼亚第三方支付_肯尼亚的COVID-19病例正在Swift增加,我们不知道为什么。
  18. mysql MGR配置keepalived
  19. 北邮微型计算机原理及应用阶段二,北邮信通院微机原理第二章.ppt
  20. 渡一教育公开课web前端开发JavaScript精英课学习笔记(一)前言

热门文章

  1. C语言学习(十八)大程序
  2. DIV2K数据集官网点击但是不能下载的解决方法
  3. 【Matlab语音识别】电话按键语音识别(含按键录音)【含源码 1752期】
  4. STemWin学习:关于窗口消息的基础知识
  5. 简陋而又粗鄙的金山快盘
  6. 什么是长尾关键词?长尾关键词的含义
  7. 实验十九 Spark实验:GraphX
  8. JVM进阶(一):初识 JAVA 栈
  9. CTFshow月饼杯crypto部分wp
  10. 使用windows电脑制作mac启动盘