Jface Dialog打开时的初始位置自定义问题

PreferenceDialog继承于Jface包中的Dialog类

WizardDialog也继承于Jface包中的Dialog类

这两个Dialog看似很难自定义其初始位置,因为这Dialog.open()前,Shell还为null,open()以后,对Shell进行定位不仅毫无效果还会导致系统崩溃,因为open()函数会阻塞线程,open()之后的语句要等到Shell.dispose()掉后才可以执行,在open()之后执行之前Shell的相关操作不崩溃才怪,所以之前大家通常使用的Shell.setLocation(x,y)函数就没有用了。

那怎么定义这些对话框的位置呢,查看jface.dialogs.Dialog类可以发现,他给出了protected类型的两个函数:

protected Point getInitialSize() 


protected Point getInitialLocation(Point initialSize) 

这两个函数在Dialog.open()时被super.open()函数调用,根据函数的返回值制定Dialog的初始位置,所以机会来了。重写这两个类,让他们返回我们想要的初始大小和初始位置。从这点可以看出,jface包中的类确实做了很多优化,大部分功能都可以被重写,swt中get,set风格在jface中又有了新的表现方式(比如jface的Dialog类中不必重写open()函数,重写protected Control createContents(Composite parent)函数即可以实现Dialog的布局内容),这应该是大家在编码过程中需要留意的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值