指定JFace.Dialog初始化的位置
来源:互联网 发布:我的世界苹果版枪械js 编辑:程序博客网 时间:2024/06/05 10:38
作者:dearwolf 发表于:javaeye 原文链接:http://www.javaeye.com/topic/40872
目的1:打开一个新的对话框时,如何设定它和父对话框的相对位置?比如在登录对话框有一个“创建新帐号”的按钮,用户点击以后,就出现新的对话框用于注册,请问如何能让新的对话框和旧对话框排列的整齐一些?应该是能设定二者的相对位置吧?
最开始,以为要用Shell.setLocation来设置,但是对于一个Dialog而言,它的Shell在什么时候才能初始化呢?
我在构造函数里面,configureShell(Shell newShell)方法里面,Control createDialogArea(Composite parent)方法里面都调用过了this.getShell方法想得到当前的Shell,结果都抛出空指针异常....
后来看书发现,应该重写protected Point getInitialLocation(Point initialSize)方法
比如,在最开始的例子中,在第二个对话框中我重写了该方法,代码如下:其结果就是两个对话框底部对齐的平行排列:)
目的2: 登陆对话框要记住上次的位置。
想了半天,好像只能用IPreferenceStore来做了,在继承了AbstractUIPlugin的类中放入两个常量:然后重写两个方法: 大功告成!
目的1:打开一个新的对话框时,如何设定它和父对话框的相对位置?比如在登录对话框有一个“创建新帐号”的按钮,用户点击以后,就出现新的对话框用于注册,请问如何能让新的对话框和旧对话框排列的整齐一些?应该是能设定二者的相对位置吧?
最开始,以为要用Shell.setLocation来设置,但是对于一个Dialog而言,它的Shell在什么时候才能初始化呢?
我在构造函数里面,configureShell(Shell newShell)方法里面,Control createDialogArea(Composite parent)方法里面都调用过了this.getShell方法想得到当前的Shell,结果都抛出空指针异常....
后来看书发现,应该重写protected Point getInitialLocation(Point initialSize)方法
比如,在最开始的例子中,在第二个对话框中我重写了该方法,代码如下:
- 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;
- }
目的2: 登陆对话框要记住上次的位置。
想了半天,好像只能用IPreferenceStore来做了,在继承了AbstractUIPlugin的类中放入两个常量:
- 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();
- }
- 指定JFace.Dialog初始化的位置
- Jface Dialog打开时的初始位置自定义问题
- 点击动画弹出指定位置的dialog
- jface的dialog实现非模态
- Swt/Jface中提供的dialog
- JFace中Dialog类的使用方法
- Swt/Jface中提供的dialog
- Swt/Jface中提供的dialog
- Swt/Jface中提供的dialog
- JFace中Dialog类的使用方法
- 引用放到指定位置并且初始化的code变量
- jquery ui dialog position 初始化位置
- 自定义Dialog位置相对于指定控件
- 改变dialog的位置
- swt/jface 自定义 Dialog
- swt/jface dialog
- swt/jface 自定义 Dialog
- swt/jface 自定义 Dialog
- Linux必学的60个命令(3)-系统管理
- 那种淡淡厌倦的感觉——榛生
- Community Server系列之三:页面间关系2[介绍]
- 使用API报错“MDA(Managed debug assistent)错...”的解决办法
- 选择
- 指定JFace.Dialog初始化的位置
- 常用数据库连接字符串
- Linux必学的60个命令(4)-网络操作
- 推荐C++教程 - c/c++ - CSDN技术中心
- Community Server系列之四:Ajax在CS2.0中的应用1
- 入对行跟对人
- Linux必学的60个命令(5)-网络安全
- 产生top sql的原因
- 苏格拉底