shell swt 样式_SWT创建Shell总结和窗体的Modal(模态)状态

此处的讨论,是基于单UI线程的,也就是说只有一个Display实例。

如何创建一个Shell

需要注意,Shell是基于一个Display存在的。

1. new Shell()

【独立】内部使用Display.getDefault()获得一个dispaly,然后创建一个Shell。

2. new Shell(Display display)

【独立】使用传入的Display来创建一个Shell,通常情况下程序只有一个Display。

3. new Shell(Shell parent)

【父子关系】使用传入Shell的display创建一个Shell,内部parent变量会保存传入的shell。只有这种情况下SWT.PRIMARY_MODAL才有用。

总结

使用方法3创建Shell,如果有多个窗体,可以控制局部Parent shell不可点击。使用APPLICATION_MODAL对于上述三种情况,都可以让当前窗体模态化。

窗体的Modal级别

模态窗体,是指当前打开的窗体,是否会阻塞其它的窗体。SWT中的窗体可以是一个打开的Shell,Dialog或者MessageBox。

1. SWT.PRIMARY_MODAL

【仅限方式三】当使用父窗体shell构建shell时,父窗体不能点击,直到当前窗体关闭。但是其它Window是可以点击的。

注意:如果Dialog使用的是新创建的一个Shell,则PRIMARY_MODAL不起作用。

2. SWT.APPLICATION_MODAL

【所有shell】比PRIMARY_MODAL更严格,当前程序的所有窗口都不能点击了,直到当前窗体关闭。

3. SWT.SYSTEM_MODAL

【所有shell】比APPLICATION_MODAL更严格,整个操作系统被阻塞,除了当前窗体,其它都不能点击。

注意:SYSTEM_MODAL在Windows和Linux中都已经不再支持,因为其会冻结整个desktop。如果使用,其会自动降为APPLICATION_MODAL。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值