DefaultListCellRenderer
拡張しますJLabel
。そのメソッドでは、渡されたgetListRendererComponent
の状態に基づいて有効状態を設定します。JList
JLabel
で無効なテキストをペイントするためのコードはBasicLabelUI
、シャドウ効果でテキストをペイントする作業を行います。"Label.disabledForeground"
多くのサブクラスには、 UI プロパティを探すコードがあります。Nimbus のデフォルトは を探しているようです"Label.disabledText"
。
いくつかのオプションがあります。
"Label.disabledText"
でプロパティを設定すると、無効になっているUIManager
すべてのJLabel
インスタンスとサブクラスがこのカラーリングになります。
JList
の有効な状態をテストしてから、任意のカスタム コードを実行するカスタム レンダラーを作成できます。JList
または、有効な状態に関係なく同じように見せたい場合は、有効な状態のテストを完全に省略できます。
カスタム レンダラー アプローチを採用することをお勧めします。JLabel
プロパティの変更がどこに表示されるかを判断するのは難しいためです。そのクラスは多くの異なるコンポーネントでビルディング ブロックとして使用されているためです。