(修正)SWT标签背景透明

(修正)SWT标签背景透明


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

(修正)SWT标签背景透明
因为看见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



(修正)SWT标签背景透明

你可能感兴趣的:(UI)