5.1.4  定制应用程序窗口属性

向导生成的应用程序主界面并不能满足要求,存在很多问题,例如,主界面运行时没有自动居中,主界面大小没有固 定,主窗口标题栏文字应该是“高校经费测算系统”。再看看图5-3、图5-4的标题栏有区别没有?当然有,图5-3所示界面的标题栏是很漂亮的弧线形,而 图5-4所示界面的标题栏则不是。如此等等,需要重新设置。

1.闪屏画面

应用程序主界面显示之前往往需要做一些初始化处理工作,就是启动时间可能稍微长一些,如果没有任何提示,用户 可能会感到困惑,闪屏画面能够较好地解决这个问题。准备一幅24bit色BMP格式的图片,注意图片大小不要超过500mm×300mm。将该图片复制到 项目文件夹中替换掉原来的splash.bmp文件即可。

2.不保存窗口状态

将ApplicationWorkbenchAdvisor.java的initialize()方法中的语句:configurer.setSaveAndRestore(true);
修改为:configurer.setSaveAndRestore(false);
前文说过,设置为true,应用程序每次退出时将保存窗口状态,此处并不需要且对性能有轻微影响,所以设置为false。

3.定制窗口式样

再来定制主窗口。前面已经介绍过,在ApplicationWorkbenchWindowAdvisor.java的preWindowOpen()方法中定制窗口式样,现在修改如下。
cn.edu.jfcs.app/ ApplicationWorkbenchWindowAdvisor.java
public void preWindowOpen() {
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
//窗口设定为800x600
configurer.setInitialSize(new Point(800, 600));
//暂时不显示工具栏
configurer.setShowCoolBar(false);
//显示状态栏
configurer.setShowStatusLine(true);
//窗口只显示最小化、关闭按钮
configurer.setShellStyle(SWT.MIN | SWT.CLOSE);
//设置窗口标题
configurer.setTitle("高校经费测算系统");
}
执行上步操作后,我们会发现configurer.setShellStyle(SWT.MIN | SWT.CLOSE)这句代码的旁边出现一个带红色叉叉的小灯泡,这意味着该行代码有问题,这是因为使用了SWT.MIN常量而又没有导入相应类。解决方 法很简单,只需鼠标单击小灯泡,根据弹出的提示导入包import org.eclipse.swt.SWT即可,这也是Eclipse很贴心的小功能。现在运行看看,程序主界面已经有了较大变化。
程序中最后一句代码中的“高校经费测算系统”是一个自定义常量。一个系统中有很多类似的自定义常量,例如图片的名称、视图的 名称等等,而这些常量可能不止一个地方需要使用到。一个很好的方法是创建一个接口文件,将全部常量的定义放置到该接口文件中,这样可以统一管理,而且维护 方便。如果要修改某个常量的值,只需要到接口文件中修改就可以了。下面来实现该处理,新建一个包cn.edu.jfcs.sys,在该包下新建接口类 IAppConstants.java,代码类似于以下形式。
package cn.edu.jfcs.sys;
public interface IAppConstants {
public static final String  APPLICATION_TITLE="高校经费测算系统";
}
现在只需要将 ApplicationWorkbenchWindowAdvisor.java中preWindowOpen()方法的 configurer.setTitle("高校经费测算系统")修改为 configurer.setTitle(IAppConstants.APPLICATION_ TITLE)即可。记得导入cn.edu.jfcs.sys.IAppConstants类。
以后还会不断往该接口文件中添加常量定义。为了避免不必要的麻烦,建议读者在实际操作时先将本书附带源代码的IAppConstants.java类直接复制到自己的项目中。

4.窗口自动居中

窗口居中需要手工编程实现,编写之前先得想想代码放在哪儿?还是放在preWindowOpen()方法中 吗?当然不行,preWindowOpen()是配置窗口的构成元素,即形成窗口本身的构成部件,而居中则是定义窗口的位置,显然不属于窗口构成元素。 postWindowOpen()可以胜任此项工作,因为postWindowOpen()主要用来处理那些需要一个现成窗口才能进行的事件处理。
在代码编辑视图中单击鼠标右键,在弹出的快捷菜单中选择【Source】→【Override/ Implement Methods…】命令,弹出“Override/Implement Methods”对话框,勾选postWindowOpen()方法,默认将在光标所在处插入postWindowOpen()方法。这又是 Eclipse的一个很贴心的功能,希望读者熟练使用。改写该方法的代码如下:
cn.edu.jfcs.app/ ApplicationWorkbenchWindowAdvisor.java
public void postWindowOpen() {
//设置窗口自动居中
Shell shell = getWindowConfigurer().getWindow().getShell();
Rectangle screenSize = Display.getDefault().getClientArea();
Rectangle frameSize = shell.getBounds();
shell.setLocation((screenSize.width - frameSize.width) / 2,(
screenSize.height - frameSize.height) / 2);
}
该方法通过默认Display对象来设置屏幕宽度和高度,通过Shell对象获得当前窗口的宽度和高度,两者分别相减后再除以2,计算得到窗口左上角的(x,y)坐标。不要忘了导入相关的类,再看看运行后窗口是否自动居中。

5.设置视图标题栏的弧线形外观

大家肯定都喜欢图5-3所示界面中弧线形的标题栏,这种风格的标题栏涉及到工作台UI属性(org.eclipse.ui Preference):SHOW_TRADITIONAL_STYLE_TABS。可以通过三种方法进行设置。
(1)硬编码实现
硬编码实现是指通过直接编写代码实现。打开ApplicationWorkbenchAdvisor.java文件,修改initialize()方法代码如下:
cn.edu.jfcs.app/ ApplicationWorkbenchAdvisor.java
public void initialize(IWorkbenchConfigurer configurer) {
super.initialize(configurer);
configurer.setSaveAndRestore(false);
PlatformUI.getPreferenceStore().setValue(IWorkbenchPreferenceConstants.
SHOW_TRADITIONAL_STYLE_TABS, false);
}
相关的属性很多,具体可以查看IWorkbenchPreferenceConstants接口文件。方法是,按住 【Ctrl】键,将鼠标移动到IWorkbenchPreferenceConstants上 面,IWorkbenchPreferenceConstants下面会出现下划线,单击鼠标左键即可。对于Eclipse的其他方法也是如此操作。这里 先简单介绍几个常用属性。
表5-4  IWorkbenchPreferenceConstants常见属性
属  性  名
属 性 说 明
EDITOR_MINIMUM_CHARACTERS
但很多编辑器重叠时,设置编辑器标题文字的最短长度。默认为8个字符
SHOW_PROGRESS_ON_STARTUP
设置启动时是否显示进度条。默认值false
DOCK_PERSPECTIVE_BAR
设置透视图标题栏停泊位置。默认值为TOP_RIGHT,还可以设置为TOP_LEFT、LEFT
SHOW_TEXT_ON_PERSPECTIVE_BAR
设置透视图是否显示标题文本。默认值为true
SHOW_INTRO
启动时是否显示欢迎画面。默认值为true
可能有些人喜欢每次启动时显示欢迎画面,则可以在initialize()方法中加入:
PlatformUI.getPreferenceStore().setValue(IWorkbenchPreferenceConstants.SHOW_INTRO, true);
(2)修改产品默认配置文件
可以创建一个初始化配置文件,使用默认的配置文件名plugin_customization.ini。在项目名称上单击鼠 标右键,选择【New】→【File】,在File name后输入plugin_customization.ini,单击【Finish】按钮,输入以下内容。
#设置视图标题栏的弧线形外观
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
#编辑器标题栏提示文字最短长度
org.eclipse.ui/ EDITOR_MINIMUM_CHARACTERS =12
(3)自定义配置文件
如果你不喜欢默认的配置文件,完全可以更改配置文件名(本书采用这种方法),具体步骤如下。
① 双击pludin.xml文件,再单击“Extensions”页。
② 展开org.eclipse.core.runtime.products,在jfcs(Product)上单击鼠标右键,选择【New】→【property】。
③ 在Extension Element Details下的name后的文本框中输入属性名preferenceCustomization
(属性名不能更改),value后的文本框中输入AppPref.ini(可任意命名),具体如图5-10所示。若要查看 org.eclipse.core.runtime.products有哪些可供配置的属性,则只需要单击 org.eclipse.core.runtime.products名,然后再单击右边的Open extension point description,Eclipse将打开关于Products扩展点的属性描述,如图5-11所示。注意到该属性默认的文件正是前面所说的 plugin_customization.ini。
图5-10  添加属性设置视图
图5-11  org.eclipse.core.runtime.products扩展点描述
④ 在项目名称上单击鼠标右键,选择【New】→【File】,在File name后输入AppPref.ini,单击【Finish】按钮,输入配置内容即可。
这里提醒一下,如果做了很多设置,而运行时似乎没有生效,这是由于Eclipse缓存了旧配置信息。解决方 法:选择系统菜单的【Run】→【Run…】,弹出“Run”对话框,先单击“Eclipse Application”,再单击“jfcs”,勾选“Clean workspace data before launching”,不要勾选“Ask for confirmation before cleaning”。这样可以保证每次运行都是最新结果,设置画面如图5-12所示。
图5-12  运行设置对话框
SHOW_INTRO 比较特别。如果使用ini配置文件的方式,无论使用默认配置文件还是自定义配置文件,产品打包发布后(不在Eclipse环境中运行)只是首次启动时出现 欢迎画面,这是因为Eclipse在运行结束时会修改工作空间目录中org.eclipse.ui.prefs文件的showIntro=false,所 以下次启动时将不会出现欢迎画面。如果希望程序每次启动时都出现欢迎画面,需要采取硬编码的方式!

转载于:https://blog.51cto.com/chenying/123518

[转]Eclipse RCP应用系统开发方法与实战2-- 定制应用程序窗口属性相关推荐

  1. 动态系统开发方法DSDM

    动态系统开发方法(DSDM)倡导以业务为核心,快速而有效地进行系统开发.可以把DSDM看成一种控制框架,其重点在于快速交付并补充如何应用这些控制的指导原则. DSDM是一整套的方法论,不仅仅包括软件开 ...

  2. 信息系统开发与管理【三】之 系统开发方法概述

    感谢内容提供者:金牛区吴迪软件开发工作室 接上一篇:信息系统开发与管理[二]之 管理信息系统的基本知识 文章目录 一.管理信息系统开发的基本问题 1.系统开发具备的条件 2.系统开发前的准备工作 3. ...

  3. 产品经理懂点技术:几种常用的系统开发方法

    常用的系统开发方法有: 结构化系统开发方法 原型法 面向对象方法 计算机辅助软件工程方法 下面一一为大家详细介绍: 1 结构化系统开发方法 结构化系统开发方法(Structured System An ...

  4. python遥感图像处理_基于Python的矿山遥感监测系统开发方法

    目前,很多学者都是从宏观上讨论遥感和GIS一体化集成的可能性及集成的方法,但这些研究在GIS和RS方向只是对Python集成研究的思路或某一功能的介绍,并没有一个基于Python开发的集成GIS与RS ...

  5. 软件工程管理之《系统开发方法与项目生命周期的矛盾冲突》

    各位读者大家好,由于本文章是我在闲暇时间来迭代补充编辑的,并不是一次性编辑完成,如果影响大家的阅读感受,尽请大家谅解!!!  >>第一章:项目管理者情况 很高兴能与大家一起分享及探讨关于软 ...

  6. 数据库的应用系统开发方法

    数据库的应用系统开发方法 Date date = new Date(): System.out.println(date); //当前时间:2020-4-2 15:30 本文通过网上查阅资料,老师提供 ...

  7. 数据库应用系统开发方法(知识点总结)

    学习目标: 数据库应用系统开发方法(知识点总结) 学习内容: 数据库的三级模式: 外模式:用户可见的部分数据的存在形式 模式:等价为全体数据的逻辑结构且用户不可见(中间) 内模式:数据库的物理结构和存 ...

  8. 第1章 数据库应用系统开发方法

    1.1数据库应用系统生命周期  1.1.1软件工程与软件开发方法  用现代工程的概念管理软件生产与开发全过程的典型方法有:瀑布模型(也称为软件生命周玥模型).快速原型模型.螺旋模型等.  1.瀑布模型 ...

  9. 【首次分享】企业级车载系统开发指南+项目实战(附源码)

    前言 Android 现在已经拥有十分成熟的开发体系,成熟也说明了这个系统的带来的开发红利消退了,说通俗点就是可以跳槽岗位少了,随着最近几年小程序和公众号崛起,让app应用需求量断崖式下降.所以现在更 ...

最新文章

  1. 李沐团队半年离开六人,MxNet是否英雄落幕?贾扬清:关键能否解决新痛点
  2. Magic Leap 2实测出炉:视场角增大20度,重量减轻20%,透光率低至0.3%让AR特效更逼真...
  3. python做图像识别好还是c++好_OpenCV人脸检测(C++/Python)
  4. 百度痞哥:百度贴吧的回帖为什么没做点赞功能?
  5. Spring.Net学习笔记(2)-依赖注入
  6. VBS脚本恶作剧:关机+重启后自动关机
  7. 杭电 hdu 2019
  8. 为linux添加新字体
  9. 微服务架构工作笔记002---了解Isito新一代微服务架构-服务网格
  10. 如何打造139团队(不同层次人员的选择与培养,大型研发团队,大型敏捷开发团队)...
  11. 等待线程3秒返回结果_Excel小白超级讨厌的计算,原来只用3秒就能出结果!
  12. 五大流程成就网络运维管理的基础
  13. 如何用Java写QQ机器人 v2.0
  14. [信息安全] 05 X.509 公钥证书的格式标准
  15. H3C s5820v2 堆叠2台机器配置说明
  16. 荣耀8青春版android,华为荣耀8青春版有几个版本?荣耀8青春版低配版/标准版/高配版区别对比评测...
  17. 奇技淫巧(二)—— 不使用中间变量交换两个值
  18. Overload和Override
  19. ubuntu 触摸板失灵解决
  20. abp 链接本地mysql_ABP Vnext使用mysql数据库

热门文章

  1. ansible 修改文件变量_Ansible Playbook中的变量与引用
  2. 基于linux环境采用update-alternatives 方式进行python版本切换
  3. Java提高篇 —— Java关键字之final的几种用法
  4. 富人和穷人的对比图,时刻提醒自己!
  5. 《学做程序经理》完整版
  6. windows系统下_ffmpeg编译_2011年
  7. 常见音视频格式(转载)
  8. 多个 VUE 前端工程部署设置、nginx 代理配置
  9. @Test 运行 Method xxx should be void、Method xxx should have no parameters
  10. 论文: YOLO9000-Better,Faster,Stronger