(修正)SWT标签背景透明

(修正)SWT标签背景透明


之前用下面方法,以为解决了背景透明问题.
label.setBackground(Display.getCurrent().getSystemColor(SWT.TRANSPARENCY_ALPHA));

[img]http://dl.iteye.com/upload/attachment/361803/4d458123-1367-3921-b7c1-249d730323e1.jpg[/img]
因为看见SWT.TRANSPARENCY_ALPHA属性,以为是专为解决背景准备的,所以就没有去做更深入的研究.
结果发现在后续的UI设计的过程中,还是出现非透明效果,背景显现白色.才发现背景透明的假象是因为: SWT.TRANSPARENCY_ALPHA将背景置为白色,刚好上图的UI背景刚好也是白色的缘故.

解决方法:

shell.setBackgroundMode(int mode);
/*
参数mode有三个可选值:
SWT.INHERIT_FORCE,SWT.INHERIT_DEFAULT,SWT.INHERIT_NONE
其中前二个能达成背景透明效果,SWT.INHERIT_NONE则不行.
猜测: Shell默认的setBackgroundMode()方法参数可能是SWT.INHERIT_NONE.
*/


错解:
1. 网上有朋友可能是记错了方法,说用label的setBackgroundMode(SWT.INHERIT_FORCE)方法是不对的,Label对象没有此方法.

2. 也有说将SWT.INHERIT_FORCE属性放在Shell类实例化中,也是不对的.
因为Shell构造方法中的style只有下面这些值可用,其他属性会经过某种转换成下列的一种.

* @see SWT#BORDER
* @see SWT#CLOSE
* @see SWT#MIN
* @see SWT#MAX
* @see SWT#RESIZE
* @see SWT#TITLE
* @see SWT#TOOL
* @see SWT#NO_TRIM
* @see SWT#SHELL_TRIM
* @see SWT#DIALOG_TRIM
* @see SWT#ON_TOP
* @see SWT#MODELESS
* @see SWT#PRIMARY_MODAL
* @see SWT#APPLICATION_MODAL
* @see SWT#SYSTEM_MODAL
* @see SWT#SHEET



[img]http://dl.iteye.com/upload/attachment/369553/ef018187-0891-361a-97b0-372c169bc480.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值