2010-02-16 35 views
2

在Swing中,是否有一個屬性可以設置JList禁用的前景色?在Swing中,是否有一個屬性可以設置JList禁用的前景色?

我正在使用Netbeans GUI構建器,並且我想向屬性文件中添加一個屬性,該屬性將JList中文本的顏色設置爲禁用JList時的不同默認值。使用Nimbus LAF時,會有不同的顏色,因爲禁用時文本爲灰色,但啓用時爲黑色。禁用時我不希望它變成灰色。

標準的前景色只是.foreground。

謝謝。

回答

3

DefaultListCellRenderer延伸JLabel。在其getListRendererComponent方法,它會將其啓用狀態,基於該JList的傳遞進來。

代碼爲BasicLabelUI畫禁用JLabel文本做了一些工作,以畫帶陰影效果的文字。在許多子類中,您將找到代碼來查找"Label.disabledForeground" UI屬性。 The Nimbus defaults似乎尋找"Label.disabledText"

你有幾個選擇:

  1. 您可以設置"Label.disabledText"屬性在UIManager,這將使所有JLabel實例和子類被禁用採取這種着色。
  2. 您可以爲您的JList創建一個自定義渲染器,用於測試JList的啓用狀態,然後執行您想要的任何自定義代碼 - 或者,如果您希望它看起來相同(不管啓用狀態測試是否啓用)州。

我建議你採取自定義渲染方法,因爲它是很難說一個JLabel特性的變化會顯現出來,因爲該類用作許多不同組件的builing塊。

+0

感謝您的提示。我忘記了渲染器。完成擴展DefaultListCellRenderer,覆蓋getListRendererComponent,調用super getListRendererComponent並在返回之前調用setEnabled(true)。這正是我真正想要的。 –

1

如果有屬性設置,則UIManager Defaults程序應該顯示您要更改的屬性。我沒有看到Metal或Windows LAF的屬性,因此可能表明這是直接在UI代碼中進行控制的。

相關問題