java 开发swt_一个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 }
5,外部资源路径问题,比如说背景图片:建议放在项目下面,这样打包时可以不用打包资源文件。我的项目结构如下:
1), 不能用:Stringpath=ClassLoader.getSystemResource("res/").getPath()+"bg.jpg";//这个在打包后,会报空指针异常,具体是怎么回事,我不知道。
建议用:path1 = System.getProperty("user.dir"); //得到是项目的根目录。
2),中文中问题:path1=URLDecoder.decode(path1,"UTF-8");//进行转码处理。不然会 报找不到路径异常
6,设置窗口打开与关闭的渐显与渐隐效果
1),打开时:渐显
2),关闭时:渐隐
java 开发swt_一个java swt桌面程序开发到打包的总结(1)(收集)相关推荐
- java swt shell_一个java swt桌面程序开发到打包的总结(1)
一个java swt桌面程序开发到打包的总结(1) --概述与关于swt的问题 一.概述: 几天一直在用金山打字通练习英语(本人英语比较烂),把金山打字能里面的文章全部掠了N遍.打的没意思了,想想怎么 ...
- python程序开发_用python进行桌面程序开发
Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所 ...
- Java桌面程序开发——如何开发美观漂亮好看的桌面程序
大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...
- 【转】Java桌面程序开发——如何开发美观漂亮好看的桌面程序
大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...
- 怎么编写java_程序员学编程第一步:手把手教你开发第一个Java程序
想必大家已经对Java语言有了初步的认识,对Java的发展历程.运行原理和环境安装有了一定的了解.在本文中,我们继续来学习Java的详细语法与开发规范,教大家用Java编写出简单的程序. 2.1 开发 ...
- 【赵强老师】开发第一个Java程序
先看视频. [赵强老师]开发第一个Java程序 Java 是一项用于开发应用程序的技术,可以让 Web 变得更有意思和更实用.Java 与 javascript 并不相同,后者是一种用于创建 Web ...
- JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...
用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...
- 桌面应用开发框架 - Windows桌面程序开发工具
桌面应用开发框架 - Windows桌面程序开发工具 桌面应用开发 桌面应用开发是指基于Windows操作系统开发的应用程序,在Windows环境运行,包括32位\64位的应用程序, 从开发者层面讲, ...
- windows桌面程序开发_每个软件开发人员都需要的6个Windows桌面实用程序
windows桌面程序开发 大多数在Windows上工作的软件开发人员都有相当标准的工具集:代码编辑器或IDE: Git或其他版本控制系统: 消息传递客户端(Slack或其克隆之一),等等. 由于大多 ...
最新文章
- CSS0 -- 静态、自适应、流式、响应式
- linux查看mq死信队列,linux下postgresql 一主多从、redis集群、rabbitmq等环境搭建 (九) xa-rdmp-archiving 从数据库的安装...
- 智能车竞赛技术报告 | 智能车视觉 - 中原工学院 - 逐鹿 - 分母队
- 电脑重装系统文件会丢失吗_电脑黑屏,利用重装系统软件,把黑屏电脑里的文件拷出来...
- 关于mysql修改密码后的问题
- 关于三极管偏置电路的思考
- 焦虑的互联网人及35岁定律
- 简述一下索引的匹配原则_【进阶之路】索引中一些易忽视的点
- android 字符串加密算法,Android常见加密算法实现
- RabbitMQ教程_5 整合SpringBoot
- 交换局域网(链路层+以太网+交换机)
- ssm+vue基于微信小程序的数学辅导教学学习系统#毕业设计
- python做app接口测试_一种APP接口自动化测试方法与流程
- 全民一起VBA实战篇 专题2 第三回 VBA已有Sort方法,欲排序何必再写循环
- webpack性能优化
- 555定时器的工作原理
- 完美卸载mac电脑里的软件及残留清理教程
- 基于点锐度的清晰度算法 EAV
- C#加载本地相对路径HTML页面
- python人物关系网络图共现_文本分析之制作网络关系图
热门文章
- STM32离线下载器,DAPLink仿真器,串口调试工具
- 盘点2021Android框架百大排行榜 附:《Android百大框架源码解析》
- 巡风xunfeng代码研究---核心模块深入分析--搜索和搜索结果
- python屏幕取词getword_专业屏幕取词引擎-Getword
- 如何将多个excel表格合并成一个_多个PDF如何合并成一个?就用这个PDF在线工具!...
- 小程序毕设作品之微信校园二手书交易小程序毕业设计成品(4)开题报告
- mysql连接池和最大连接数_数据库连接池和mysql的最大连接数的区别
- C#替换DataTable列名
- AUTOSAR架构的CAN通讯学习(一)——整体概述
- 使用hutool的Http请求工具类远程调用接口(支持GET/POST)