`
yeshaoting
  • 浏览: 667419 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(修正)SWT标签背景透明

UI 
阅读更多
(修正)SWT标签背景透明


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


因为看见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





  • 大小: 22.7 KB
  • 大小: 23.9 KB
分享到:
评论
3 楼 yeshaoting 2011-05-16  

whatable 写道
为了label去搞shell的background mode不太好吧
Composite上有setBackgroundMode方法,可以借鉴图层的概念

   ----label ,label,....---- label会透明背景
  ---容纳Label的Composite----- setBackgroundMode(SWT.INHERIT_FORCE)
--------带有背景图的容器--------
  .
  .
  .
-------------Shell--------------

你的意思是说在Shell上加一个Composite带有背景图的容器,然后将label添加到该容器上,设置该容器setBackgroundMode(SWT.INHERIT_FORCE)代替设置Shell的setBackgroundMode(SWT.INHERIT_FORCE) ??
嗯...这么做确实合理一点.我写的代码很多时候都不够严谨.
2 楼 yeshaoting 2011-05-16  

whatable 写道
为了label去搞shell的background mode不太好吧
Composite上有setBackgroundMode方法,可以借鉴图层的概念

   ----label ,label,....---- label会透明背景
  ---容纳Label的Composite----- setBackgroundMode(SWT.INHERIT_FORCE)
--------带有背景图的容器--------
  .
  .
  .
-------------Shell--------------

你的意思是说在Shell上加一个Composite带有背景图的容器,然后将label添加到该容器上,设置该容器setBackgroundMode(SWT.INHERIT_FORCE)代替设置Shell的setBackgroundMode(SWT.INHERIT_FORCE) ??
嗯...这么做确实合理一点. 
1 楼 whatable 2011-05-16  
为了label去搞shell的background mode不太好吧
Composite上有setBackgroundMode方法,可以借鉴图层的概念

   ----label ,label,....---- label会透明背景
  ---容纳Label的Composite----- setBackgroundMode(SWT.INHERIT_FORCE)
--------带有背景图的容器--------
  .
  .
  .
-------------Shell--------------

相关推荐

Global site tag (gtag.js) - Google Analytics