Swing實現設定文字透明度的思路

2021-10-14 08:02:38 字數 1379 閱讀 1571

我們知道jlist中的內容其實就是乙個乙個jlabel組成的,因此只需設定jlabel中的透明度就行了。但jlabel只有乙個setopque方法,而且還是讓元件透明而不是其中的文字透明的,我現在想讓文字有透明度怎麼辦?

我們知道swing是支援html的,如果你想讓沒有使用html標籤的文字透明,些許還好辦,自定義乙個labelui,重寫paintenabledtextpaintdisabledtext就行了,例如下面的**

public

class

labelui

extends

basiclabelui

@override

protected

void

paintenabledtext

(jlabel l, graphics g, string s,

int textx,

int texty)

}

通過設定畫筆的透明度來讓繪製的文字透明即可,短短幾行**就實現了。

如果文字帶html標籤,又想設定透明度,又想保留html標籤怎麼辦呢?能否通過html中的rgbaopacity設定?很遺憾,回答是不能。swing只支援html3.2及以下的版本,這個版本是非常老的了,根本不支援文字的透明度設定,再加上剛剛的方法設定帶html的文字是無效的,只好另尋思路…

能否直接讓整個jlabel透明,也許真的是個好方法,看下面的**

public

class

labelui

extends

basiclabelui

@override

public

void

paint

(graphics g, jcomponent c)

這**跟上面就是方法不一樣,乙個是paintenabledtext乙個是paintpaint與它不同的地方是paint是繪製整個元件。不能讓文字透明,換個思路,讓jlabel透明不就讓文字透明了嗎,嘿嘿!

這個事情告訴我們一定要善於換個角度思考問題!

最終我實現的效果如下:

css 設定透明度

要設定某一元素的背景為透明,在 chrome firefox opera 下是這樣的 css background color rgba 0,0,0,0.4 rgba 中的最後乙個引數 0.4 就是想要的透明度,範圍在0 1之間。在 ie 中一般是這樣的 css background color r...

CSS設定背景透明度

控制 如下 各引數含義如下 enabledenabled設定或檢索濾鏡是否啟用。stylestyle設定或檢索div背景透明漸變的樣式。opacityopacity設定或檢索透明漸變的開始透明度。finishopacityfinishopacity設定或檢索div背景透明漸變的結束透明度。start...

osg BlendFunc來設定透明度

osg blendfunc介紹 混合是什麼呢?混合就是把兩種顏色混在一起。具體一點,就是把某一畫素位置原來的顏色和將要畫上去的顏色,通過某種方式混在一起,從而實現特殊的效果。假設我們需要繪製這樣乙個場景 透過紅色的玻璃去看綠色的物體,那麼可以先繪製綠色的物體,再繪製紅色玻璃。在繪製紅色玻璃的時候,利...