Shell组件的"模式"样式

1. 所谓"模式"窗口, 就是指除非采取有效的关闭手段, 用户的鼠标焦点或者输入光标将一直停留在其上的窗口. 非模态窗口则不会强制此种特性, 用户可以在当前窗口以及其他窗口间进行切换.

 

2. Shell组件包含一个称做"模式"的样式, 该样式用于决定是否阻拦该Shell组件依赖的display上的其他输入. 该样式可以是SWT.APPLICATION_MODAL, SWT.MODELESS, SWT.PRIMARY_MODALSWT.SYSTEM_MODAL. SWT.PRIMARY_MODAL样式允许Shell组件阻拦对其父组件的输入; SWT.APPLICATION_MODAL样式阻拦Shell组件依赖的display上的所有其他Shell组件的输入; 样式SYSTEM_MODAL样式阻拦当前系统中所有的向Shell组件的输入.

 

代码A是使用"模式"样式的一个例子. 在这段代码中, 创建完parentShell对象之后, parentShell为父亲组件, 创建了一个称为childShell的窗口组件. 根据上文对构造函数的介绍, childShell也依赖于display对象. 同时, parentShell释放时, childShell也会得到释放. childShell的样式包含两个组合, 前一个决定了childShell外观样式, 后一个决定了childShell对输入事件的阻拦机制.

 

代码A:

  

 

运行代码A, 可以看到它在桌面上打开两个窗口组件, 上层窗口对应childShell. 此时无法单击下层窗口, 因为对于下层窗口的所有输入都被childShell对应的窗口阻拦. 如果在上面的代码中, SWT.PRIMARY_MODAL去掉, 则这种阻拦方式也就消失了.

 

: 不同的平台对阻拦"模式"的支持有所不同. 在这种情况下, SWT会进行相应的"向上向下兼容". 比如一些操作系统就不支持SYSTEM_MODAL, 此时就会向下兼容, 使用APPLICATION_MODAL.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值