Swing/RendererUseListColors のバックアップ差分(No.1)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/RendererUseListColors へ行く。
- 1 (2022-04-11 (月) 04:16:11)
- 2 (2022-04-11 (月) 12:05:12)
- 3 (2023-10-05 (木) 12:00:58)
- 4 (2024-01-11 (木) 12:37:14)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: RendererUseListColors title: NimbusLookAndFeelでセル選択色をJListから取得するよう変更する tags: [NimbusLookAndFeel, JList, JComboBox, UIManager] author: aterai pubdate: 2022-04-11T04:12:31+09:00 description: NimbusLookAndFeelでセル選択色をPainterではなくJListから取得するよう変更します。 image: https://drive.google.com/uc?id=18L0O-5XjxIFGLpTCKDqLk4voZpSmNMoc --- * 概要 [#summary] NimbusLookAndFeelでセル選択色をPainterではなくJListから取得するよう変更します。 #download(https://drive.google.com/uc?id=18L0O-5XjxIFGLpTCKDqLk4voZpSmNMoc) * サンプルコード [#sourcecode] #code(link){{ String[] model = {"Red", "Green", "Blue"}; JList<String> list = new JList<>(model); UIDefaults d = new UIDefaults(); d.put("List.rendererUseListColors", true); String key = "Nimbus.Overrides"; list.putClientProperty(key, d); }} * 解説 [#explanation] - `List.rendererUseListColors` -- デフォルトは`false`(左) -- `true`(右)に設定すると`Painter`ではなく`JList#getSelectionBackground()`、`JList#getSelectionForeground()`で取得される色でセル選択を描画するようになる - `ComboBox.rendererUseListColors` -- `ComboBox.rendererUseListColors: true` --- `ComboBox.rendererUseListColors`を`ture`に設定すると`NimbusLookAndFeel`のデフォルトセルレンダラーである`SynthComboBoxRenderer`は`JList#getSelectionBackground()`、`JList#getSelectionForeground()`で取得される色でセルを描画する --- `ComboBox.rendererUseListColors`を`ture`に設定するとセル背景色が描画されなくなるため設定する意味がない? -- `DefaultListCellRenderer` --- `JComboBox`に`DefaultListCellRenderer`を設定すると`Painter`ではなく`JList#getSelectionBackground()`、`JList#getSelectionForeground()`で取得される色でセル選択を描画するようになる -- `BasicComboBoxRenderer` --- `DefaultListCellRenderer`ではなく`BasicComboBoxRenderer`を使用するとセル背景色が描画されない? -- `SynthComboBoxRenderer + ListCellRenderer` --- `SynthComboBoxRenderer`を使用してデフォルトの`Painter`ででセルを描画する --- `ComboBox.rendererUseListColors`を`ture`に設定している別`JComboBox`が存在すると`LookAndFeel`を変更したときにその値が影響してしまうバグ?があるため、`JComboBox#updateUI()`をオーバーライドして常に`ComboBox.rendererUseListColors`を`false`に再設定している --- `List.rendererUseListColors`は`LookAndFeel`を変更しても他の`JList`の設定が影響したりしない * 参考リンク [#reference] - [[JComboBoxのドロップダウンリストでの選択背景色を変更する>Swing/ComboBoxSelectionBackground]] * コメント [#comment] #comment #comment