2010-03-25 64 views
3

我有文本和圖標的JLabel有獨立的文本和圖標背景顏色

alt text

設置背景改變了完整的標籤顏色的簡單的JLabel元素。

我想只能在標籤的文本部分渲染背景顏色,即 - 爲圖標和文本分開背景/前景。選擇/取消選擇標籤將翻轉圖標和文本後面的顏色。這可能是通過擴展JLabel來實現的,如果是的話,我應該自定義哪些方法?

alt text

我的替代想法是創建具有兩個單獨的標籤元件,一個與其他的文字的圖標面板。這看起來有點凌亂,在我開始之前,我想知道是否有一個更好的方式與Swing實現這一點。

+0

這聽起來像你以後有什麼是不是一個標籤,但有一個自定義的UI按鈕,例如,通過JButton.setUI()。 (或者另一種方法是將標籤添加到按鈕 - JButton擴展Container - 然後通過各種按鈕事件更改其背景。) – 2010-03-25 12:42:34

回答

0

我假設你使用的圖標具有透明背景?如果是這樣,您可以使用具有匹配背景顏色的圖標。這樣做應該允許您在整個標籤上設置背景(),但只能在文本上看到它。

+0

是的 - 對選定和取消選擇的操作使用透明圖標。這裏的整個想法是避免重新生成或更改圖標顏色。我知道我可以破解它,但我正在尋找正確的解決方案。 – emeraldjava 2010-03-25 13:34:10

0

JButton支持圖像和文本的不同對齊選項。在大多數情況下,圖像或文字都不會填充按鈕的整個寬度或高度。所以IMO使它在一個按鈕中發生是不現實的,除非你想覆蓋按鈕的繪畫。

你的另一種想法是一個更簡單的解決方案。在那裏你可以使用BorderLayoutMigLayout來實現你的目標。

1

我喜歡你正在做的風格,但它看起來像你正在重新實現JToggleButton。

這是一個切換按鈕,例如,被選中的左側和右側未選擇:

alt text http://downloads.padlocksoftware.net/toggle.png

它沒有在文字浮華的背景,但它是沒有按」解決方案要求你實現你自己的組件。

對齊被設置爲:

jToggleButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); 
jToggleButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); 
+1

也有更好的造型! – XpiritO 2010-03-25 14:33:47