`
zhongkem
  • 浏览: 152509 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

swt/jFace设置对话框的初始位置问题

 
阅读更多

目的1:打开一个新的对话框时,如何设定它和父对话框的相对位置?比如在登录对话框有一个“创建新帐号”的按钮,用户点击以后,就出现新的对话框用于注册,请问如何能让新的对话框和旧对话框排列的整齐一些?应该是能设定二者的相对位置吧?
最开始,以为要用Shell.setLocation来设置,但是对于一个Dialog而言,它的Shell在什么时候才能初始化呢?

我 在构造函数里面,configureShell(Shell newShell)方法里面,Control createDialogArea(Composite parent)方法里面都调用过了this.getShell方法想得到当前的Shell,结果都抛出空指针异常....

后来看书发现,应该重写protected Point getInitialLocation(Point initialSize)方法

比如,在最开始的例子中,在第二个对话框中我重写了该方法,代码如下:

目的2: 登陆对话框要记住上次的位置。

想了半天,好像只能用IPreferenceStore来做了,在继承了AbstractUIPlugin的类中放入两个常量:

 


 
  1. protected Point getInitialLocation(Point initialSize) {  
  2.         Point location = new Point(this.getParentShell().getLocation().x  
  3.                 + this.getParentShell().getBounds().width, this  
  4.                 .getParentShell().getLocation().y  
  5.                 + this.getParentShell().getBounds().height  
  6.                 - this.getInitialSize().y);  
  7.         return location;  
  8.     }  



其结果就是两个对话框底部对齐的平行排列:)

 
  1. public static final String LOGINDIALOG_POSITION_X = "LOGINDIALOG_POSITION_X";  
  2.   
  3. 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();   
    }  

 

分享到:
评论

相关推荐

    Eclipse SWT/JFACE 核心应用 配套源代码

    4. **源代码分析**:通过研究这些源代码,开发者可以学习到如何初始化SWT和JFace工作台,如何创建窗口和视图,如何添加控件并处理用户交互,以及如何组织和管理应用程序的数据。此外,代码中可能还包括错误处理和...

    SWT/JFace

    ### SWT/JFace 开发实例详解 #### 概述 SWT (Standard Widget Toolkit) 和 JFace 是两个在 Eclipse 平台上广泛使用的用户界面框架。SWT 提供了跨平台的 GUI 组件,而 JFace 则是基于 SWT 构建的一套高级 UI 工具包...

    swt_jface_celleditor

    在Java编程领域, SWT (Standard Widget Toolkit) 和 JFace 是两个强大的图形用户界面(GUI)库,它们被广泛用于构建桌面应用程序。`swt_jface_celleditor` 标题和描述所涉及的知识点主要围绕如何在SWT/JFace中的...

    Eclipse_Swt_Jface_核心应用_部分19

    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)小制作 BugTracker】是一个基于SWT和JFace库开发的轻量级应用程序,用于跟踪和管理软件开发过程中的错误或“bug”。这个应用展示了如何使用SWT和JFace来构建用户界面,并实现基本的功能,如添加新条目...

    Eclipse+RCP框架分析和应用研究.pdf

    JFace(Java Face)则是建立在SWT之上的一组高级GUI控件和对话框,简化了用户界面的创建过程。 2. **Eclipse插件结构**:Eclipse平台的插件体系结构允许开发者创建可独立开发、测试和部署的模块化组件,这些组件...

    swt_designer程序设计教程

    1. 可视化设计:SWT Designer允许开发者通过图形化界面设计UI,无需编写大量的布局和组件初始化代码。 2. 实时预览:在设计过程中,可以实时查看UI的效果,便于调整布局和样式。 3. 代码生成和同步:修改图形界面会...

    RCP_Plug-in开发自学教程

    5. **界面设计**:通过布局管理器(Layout Manager)实现界面的自适应和美观设计,以及使用SWT和JFace的对话框(Dialog)和首选项页面(Preference Page)。 6. **国际化**:学习如何使应用程序支持多语言,理解...

    简单的文件资源管理器应用程序

    1. **初始化Shell**:创建一个新的Shell实例,设置其大小、位置和标题。 2. **创建TreeViewer**:为Shell添加一个TreeControl,并使用TreeViewer进行包装。加载文件系统的根目录作为初始节点。 3. **实现...

    SWT日期控件

    3. **配置控件**:根据需要设置日期选择器的属性,如初始日期、日期格式、可选日期范围等。 4. **绑定事件**:注册日期选择事件监听器,处理用户选择日期后的业务逻辑。 5. **测试与调试**:确保在不同操作系统和...

    eclipse插件开发-铺设一条插件开发普及之路(1-5章).pdf

    - **jFace**:基于SWT之上的一层高级组件库,提供了更高级别的抽象和功能,如数据绑定、表格视图等。 ##### 二、SWT使用入门 - **基础组件**:介绍如何使用SWT中的基本控件,如按钮、文本框等。 - **布局管理器**:...

    RCP_Plug-in开发自学教程(6-10章)

    - **创建SWT/JFace工程**:通过SWT和JFace库来构建自定义对话框。 - **自定义Dialog**:详细介绍如何创建和设计自定义对话框界面。 - **说明**:提供关于自定义对话框的高级技巧和注意事项。 #### 第七章:向导 ...

    \swt系列教材.rar

    在SWT系列教材中,你将学习如何初始化SWT环境,创建基本的窗口和控件,以及如何处理事件。教材还将深入讲解布局管理、数据绑定和JFace的使用,通过实例演示如何构建完整的GUI应用程序。此外,你还将了解到SWT与其他...

    Java程序设计之swt教程

    JFace提供了一些常用的对话框、向导(Wizard)组件,以及用于读取和写入数据的模型和视图等。虽然JFace也使用SWT作为底层实现,但是它提供了更加强大和复杂的用户界面功能,使得开发者能够更加专注于业务逻辑的实现...

    Eclipse插件开发

    - SWT(JFace)是Eclipse图形用户界面的核心组件,提供了一套丰富的UI控件和事件处理机制。 - 类库结构、资源管理、多线程访问GUI资源等是理解SWT的关键点。 - **3.2 SWT疑难点解析** - Button、Text、Table等控件...

    自己动手写开发工具--基于Eclipse的工具开发

    - **SWT/JFace基础**:SWT和JFace是Eclipse GUI开发的重要组成部分。文章介绍了SWT的类库结构、资源管理、非用户线程访问用户线程的GUI资源、对话框中的值获取等关键概念。 - **SWT疑难点解析**:针对SWT中常见的...

    rcp入门程序

    3. **SWT/JFace开发基础**:虽然这不是必需的,但对于定制用户界面非常有帮助。 #### 三、Eclipse组件及其作用 为了更好地理解如何使用RCP构建应用程序,我们需要对Eclipse的核心组件有一个大致的认识。这些组件...

Global site tag (gtag.js) - Google Analytics