如上图所示,介个ContentArea的背景问题已经解决鸟,下面就素重中之重滴ButtonArea鸟~~~让我们打开Dialog的源代码,看一下createButtonBar()的部分,就可以发现里面有两行:
- GridData data = new GridData(GridData.HORIZONTAL_ALIGN_END
- | GridData.VERTICAL_ALIGN_CENTER);
- composite.setLayoutData(data);
介样子怎么能行捏,偶们需要让介个Composite填满整个DialogArea,这样子才可以显示出整个背景图片,所以偶们就要在重写后的方法中加入下面一行代码:
- composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
现在让偶们再来看看运行后的结果:
为什么会素介个样子捏?即使素把layout改成SWT.RIGHT,也不会改变介个结果...偶快要郁闷滴抓狂鸟.....
经过漫长滴测试,偶终于发现鸟,如果控件滴layoutData不grabExcessSpace的话,那么现在滴DialogArea的Composite实际大小就素两个Button加起来滴大小,所以无论如何也素不会居右对齐滴....介可怎么办捏.....如果去重写createButton方法滴话,那介个dialog滴代码可就太丑陋鸟....
在一个偶然滴机会下,偶终于发现鸟SWT.RIGHT_TO_LEFT !!!偶依稀见到鸟灿烂滴曙光!8过Composite的style素在创建时指定的,似乎米办法在后面覆盖,所以偶们只好整个滴把createButtonBar重写掉鸟~~~
- protected Control createButtonBar(Composite parent) {
- Composite composite = new Composite(parent, SWT.RIGHT_TO_LEFT
- | SWT.NONE);
-
-
- GridLayout layout = new GridLayout();
- layout.makeColumnsEqualWidth = true;
- layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
- layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
- layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
- layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
- layout.marginLeft = 10;
- composite.setLayout(layout);
- GridData data = new GridData(SWT.FILL, SWT.TOP, false, false);
- composite.setLayoutData(data);
- composite.setFont(parent.getFont());
-
-
- createButtonsForButtonBar(composite);
- composite.setBackgroundImage(backgroundBtmImage);
- return composite;
- }
在上面的代码中,偶除了对偶所提到的地方进行了修改以外,还加上鸟一行:
layout.marginLeft = 10;
介个素因为如果右边距过小滴话,背景图片就会被覆盖掉一些,而因为偶们用到鸟SWT.RIGHT_TO_LEFT,所以应当设置marginLeft滴值 :-)
还有一点素8能忘记滴,就素要重写一下setButtonLayoutData(Button button)方法,因为偶们要把Button改成居右对齐:
- protected void setButtonLayoutData(Button button) {
- GridData data = new GridData(SWT.RIGHT, SWT.CENTER, false, false);
- int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- Point minSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
- data.widthHint = Math.max(widthHint, minSize.x);
- button.setLayoutData(data);
- }
然后再在createButtonsForButtonBar()方法中,把创建按钮的顺序改变一下,偶们就可以看到最开始滴那张美丽滴对话框鸟~~~虽然被偶涂改滴有些不美丽鸟~~~
现在还有个小小滴问题就素按钮距离底端滴黑框太近鸟~~介个素因为,介个Composite只有一行,所以要改变按钮距离底端滴距离,那么DialogArea滴大小就要跟着改变,而现在偶们滴DialogArea所需要滴背景图片还米改好,于是只有这样鸟~~~大家应该知道在哪里设置底边的边距吧?就素createButtonBar方法中滴那个layout.marginHeight =xxx :)
最后别忘了,整个对话框的高度,应该是Window Title Bar,Content Area和Button Bar三部分滴和。
偶已经说完鸟,如果觉得偶滴介篇文章对你有些帮助的朋友,请去支持一下偶们美丽可爱滴靓颖同学滴新专辑The One吧:)多谢!
相关推荐
在这个示例中,"demo_rcp_dialog"很可能是展示如何创建和使用自定义对话框的。这可能包括了如何定义对话框的布局、添加控件、处理用户输入以及关闭对话框的逻辑。 接着是"demo_rcp_view"。在RCP应用中,视图(View...
基于eclipse rcp插件的对话框的开发
4. **多语言支持**:RCP支持国际化,方便全球用户使用。 5. **强大的API**:RCP提供了丰富的API,方便开发者进行界面设计和事件处理。 **OSGI概述** OSGI(Open Services Gateway Initiative)是一种动态模块系统,...
"使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框 .doc"则专注于用户界面(UI)元素的创建和管理,包括如何定义菜单、工具栏,以及创建自定义对话框。这些组件是用户与应用程序交互的关键部分,开发者...
3. **使用Eclipse RCP进行桌面程序开发(二):菜单、工具栏和对话框 - 海边沫沫 - BlogJava.mht** 这部分可能涵盖了创建和管理用户界面元素,如菜单、工具栏和对话框的方法,这些都是构建用户友好的桌面应用必不可...
1. **第15章:对话框和向导(Dialogs and Wizards)** - 在Eclipse RCP中,对话框和向导是用户交互的重要组成部分。对话框用于获取用户的输入或显示信息,而向导则引导用户完成一系列步骤。本章可能涵盖了如何创建...
RCP 提供了多种预定义的对话框,同时支持自定义对话框的创建。 **7. 外部 JAR 的使用** RCP 应用可以引入外部 JAR 包来扩展其功能,只需在项目的类路径中包含这些 JAR,并在需要的地方导入相应的类。 **8. 添加...
索尼公司生产的RCP-1500系列遥控面板(包括RCP-1500、RCP-1501和RCP-1530型号)是用于配置和控制演播室级及广播级摄像机的专业设备。这些设备提供了高级的操作便利性和功能的多样性,使得用户能够高效地进行摄影机的...
9. **对话框(Dialog)**:RCP提供了各种对话框,如输入框、确认框等,以及如何自定义对话框。 10. **国际化(Internationalization)**:Eclipse RCP支持多语言,讲解如何为应用添加多语言支持。 11. **调试与...
【用RCP构建GEF程序】的PPT教程主要涵盖了Eclipse Rich Client Platform (RCP)和Graphical Editing Framework (GEF)的应用。Eclipse RCP是一个强大的开发平台,广泛应用于构建桌面应用程序,如GIS系统、高级项目管理...
RCP在线升级是指在不卸载原有版本的情况下,通过网络更新来安装RCP应用的新版本,以确保用户始终能够使用最新功能并获得安全补丁。本文将详细介绍RCP在线升级的过程和相关技术。 首先,理解RCP升级的基础架构是至关...
通过使用Eclipse RCP,开发者可以创建高度可定制和扩展的应用程序,这些应用不仅具有强大的功能,而且还能与其他Eclipse插件无缝集成。 ##### Eclipse Workbench Eclipse Workbench 是 Eclipse RCP 的核心组成部分...
- **概述**:对话框在RCP中的使用场景。 - **预定义的对话框**:介绍Eclipse提供的内置对话框,如消息对话框、输入对话框等。 - **创建工程**:创建使用预定义对话框的项目。 - **用户自定义对话框**:创建和...
4. **JFace应用**:学习如何使用JFace创建更高级的UI元素,如对话框、表视图、树视图等,以及数据绑定和模型-视图-控制器(MVC)模式的应用。 5. **偏好系统**:理解如何使用Eclipse的偏好服务来存储和读取用户偏好...
### 使用Eclipse RCP进行桌面程序开发:详细指南 #### 一、Eclipse RCP简介与快速起步 **Eclipse RCP** (Rich Client Platform) 是一种基于Java的开源框架,用于开发桌面应用程序。自从Eclipse 3.0版本以来,RCP...
首先,开发者应掌握Java基础知识,并且熟悉Eclipse环境的使用。虽然SWT/JFace开发基础知识是可选的,但是这些是Eclipse RCP开发中常用的图形用户界面技术,熟悉它们会对开发有所帮助。 Eclipse RCP应用的开发过程...
在本文中,我们将深入探讨如何使用RCP(Rich Client Platform)进行程序开发,这是一种基于Eclipse的框架,用于构建强大的桌面应用程序。RCP利用插件化的系统架构,提供了模块化和动态化的应用开发能力,同时也简化...
### Eclipse 3.6 RCP 开发知识点概览 #### 1. 富客户端平台 (RCP) 概述 **1.1 概述** - **定义**: Eclipse Rich Client ...通过理解和掌握这些知识点,开发者可以更加高效地使用Eclipse RCP进行桌面应用程序的开发。
Eclipse RCP 是基于 Eclipse 平台的富客户端开发框架,它为构建桌面应用程序提供了强大的基础。富客户端平台强调了丰富的用户界面和高度的可定制性,使得开发者能够利用 Java 和 Eclipse 的插件体系结构创建功能...