(修正)SWT標簽背景透明 
  
  
  
之前用下面方法,以為解決了背景透明問題.
  
  
     
  
  
因為看見SWT.TRANSPARENCY_ALPHA屬性,以為是專為解決背景準備的,所以就沒有去做更深入的研究.
結果發現在后續的UI設計的過程中,還是出現非透明效果,背景顯現白色.才發現背景透明的假象是因為: SWT.TRANSPARENCY_ALPHA將背景置為白色,剛好上圖的UI背景剛好也是白色的緣故.
  
解決方法:
  
  
錯解:
1. 網上有朋友可能是記錯了方法,說用label的setBackgroundMode(SWT.INHERIT_FORCE)方法是不對的,Label對象沒有此方法.
  
2. 也有說將SWT.INHERIT_FORCE屬性放在Shell類實例化中,也是不對的.
因為Shell構造方法中的style只有下面這些值可用,其他屬性會經過某種轉換成下列的一種.
  
  
  
  
     
  
  
  
  
 之前用下面方法,以為解決了背景透明問題.
    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
  
   
  
  
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
 
					微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
 
					

