(修正)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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
