目的1:打开一个新的对话框时,如何设定它和父对话框的相对位置?比如在登录对话框有一个“创建新帐号”的按钮,用户点击以后,就出现新的对话框用于注册,请问如何能让新的对话框和旧对话框排列的整齐一些?应该是能设定二者的相对位置吧?
最开始,以为要用Shell.setLocation来设置,但是对于一个Dialog而言,它的Shell在什么时候才能初始化呢?
我 在构造函数里面,configureShell(Shell newShell)方法里面,Control createDialogArea(Composite parent)方法里面都调用过了this.getShell方法想得到当前的Shell,结果都抛出空指针异常....
后来看书发现,应该重写protected Point getInitialLocation(Point initialSize)方法
比如,在最开始的例子中,在第二个对话框中我重写了该方法,代码如下:
目的2: 登陆对话框要记住上次的位置。
想了半天,好像只能用IPreferenceStore来做了,在继承了AbstractUIPlugin的类中放入两个常量:
-
protected Point getInitialLocation(Point initialSize) {
-
Point location = new Point(this.getParentShell().getLocation().x
-
+ this.getParentShell().getBounds().width, this
-
.getParentShell().getLocation().y
-
+ this.getParentShell().getBounds().height
-
- this.getInitialSize().y);
-
return location;
-
}
其结果就是两个对话框底部对齐的平行排列:)
-
public static final String LOGINDIALOG_POSITION_X = "LOGINDIALOG_POSITION_X";
-
-
public static final String LOGINDIALOG_POSITION_Y = "LOGINDIALOG_POSITION_Y";
然后重写两个方法:
@Override
protected Point getInitialLocation(Point initialSize) {
String xposition = preferenceStore
.getString(Peer68TPlugin.LOGINDIALOG_POSITION_X);
String yposition = preferenceStore
.getString(Peer68TPlugin.LOGINDIALOG_POSITION_Y);
if (xposition == null || yposition == null || xposition == ""
|| yposition == "") {
return super.getInitialLocation(initialSize);
} else {
return new Point(Integer.parseInt(xposition), Integer
.parseInt(yposition));
}
}
@Override
public boolean close() {
preferenceStore.setValue(Peer68TPlugin.LOGINDIALOG_POSITION_X, this
.getShell().getLocation().x);
preferenceStore.setValue(Peer68TPlugin.LOGINDIALOG_POSITION_Y, this
.getShell().getLocation().y);
return super.close();
}
分享到:
相关推荐
4. **源代码分析**:通过研究这些源代码,开发者可以学习到如何初始化SWT和JFace工作台,如何创建窗口和视图,如何添加控件并处理用户交互,以及如何组织和管理应用程序的数据。此外,代码中可能还包括错误处理和...
### SWT/JFace 开发实例详解 #### 概述 SWT (Standard Widget Toolkit) 和 JFace 是两个在 Eclipse 平台上广泛使用的用户界面框架。SWT 提供了跨平台的 GUI 组件,而 JFace 则是基于 SWT 构建的一套高级 UI 工具包...
在Java编程领域, SWT (Standard Widget Toolkit) 和 JFace 是两个强大的图形用户界面(GUI)库,它们被广泛用于构建桌面应用程序。`swt_jface_celleditor` 标题和描述所涉及的知识点主要围绕如何在SWT/JFace中的...
7.5.4 设置控件的相对位置 115 7.6 StackLayout(堆栈式布局) 115 7.7 自定义布局管理器 117 7.7.1 布局的基本原理 117 7.7.2 布局计算的常用方法 118 7.7.3 自定义布局类(BorderLayout) 119 7.8 ...
【SWT(JFace)小制作 BugTracker】是一个基于SWT和JFace库开发的轻量级应用程序,用于跟踪和管理软件开发过程中的错误或“bug”。这个应用展示了如何使用SWT和JFace来构建用户界面,并实现基本的功能,如添加新条目...
JFace(Java Face)则是建立在SWT之上的一组高级GUI控件和对话框,简化了用户界面的创建过程。 2. **Eclipse插件结构**:Eclipse平台的插件体系结构允许开发者创建可独立开发、测试和部署的模块化组件,这些组件...
1. 可视化设计:SWT Designer允许开发者通过图形化界面设计UI,无需编写大量的布局和组件初始化代码。 2. 实时预览:在设计过程中,可以实时查看UI的效果,便于调整布局和样式。 3. 代码生成和同步:修改图形界面会...
5. **界面设计**:通过布局管理器(Layout Manager)实现界面的自适应和美观设计,以及使用SWT和JFace的对话框(Dialog)和首选项页面(Preference Page)。 6. **国际化**:学习如何使应用程序支持多语言,理解...
1. **初始化Shell**:创建一个新的Shell实例,设置其大小、位置和标题。 2. **创建TreeViewer**:为Shell添加一个TreeControl,并使用TreeViewer进行包装。加载文件系统的根目录作为初始节点。 3. **实现...
3. **配置控件**:根据需要设置日期选择器的属性,如初始日期、日期格式、可选日期范围等。 4. **绑定事件**:注册日期选择事件监听器,处理用户选择日期后的业务逻辑。 5. **测试与调试**:确保在不同操作系统和...
- **jFace**:基于SWT之上的一层高级组件库,提供了更高级别的抽象和功能,如数据绑定、表格视图等。 ##### 二、SWT使用入门 - **基础组件**:介绍如何使用SWT中的基本控件,如按钮、文本框等。 - **布局管理器**:...
- **创建SWT/JFace工程**:通过SWT和JFace库来构建自定义对话框。 - **自定义Dialog**:详细介绍如何创建和设计自定义对话框界面。 - **说明**:提供关于自定义对话框的高级技巧和注意事项。 #### 第七章:向导 ...
在SWT系列教材中,你将学习如何初始化SWT环境,创建基本的窗口和控件,以及如何处理事件。教材还将深入讲解布局管理、数据绑定和JFace的使用,通过实例演示如何构建完整的GUI应用程序。此外,你还将了解到SWT与其他...
JFace提供了一些常用的对话框、向导(Wizard)组件,以及用于读取和写入数据的模型和视图等。虽然JFace也使用SWT作为底层实现,但是它提供了更加强大和复杂的用户界面功能,使得开发者能够更加专注于业务逻辑的实现...
- SWT(JFace)是Eclipse图形用户界面的核心组件,提供了一套丰富的UI控件和事件处理机制。 - 类库结构、资源管理、多线程访问GUI资源等是理解SWT的关键点。 - **3.2 SWT疑难点解析** - Button、Text、Table等控件...
- **SWT/JFace基础**:SWT和JFace是Eclipse GUI开发的重要组成部分。文章介绍了SWT的类库结构、资源管理、非用户线程访问用户线程的GUI资源、对话框中的值获取等关键概念。 - **SWT疑难点解析**:针对SWT中常见的...
3. **SWT/JFace开发基础**:虽然这不是必需的,但对于定制用户界面非常有帮助。 #### 三、Eclipse组件及其作用 为了更好地理解如何使用RCP构建应用程序,我们需要对Eclipse的核心组件有一个大致的认识。这些组件...