概要

JColorChooserのプレビューパネルにTitledBorderでテキストを表示するかを切り替えます。

サンプルコード

String key = "ColorChooser.showPreviewPanelText";
JTextArea log = new JTextArea();
JCheckBox check = new JCheckBox(key, UIManager.getBoolean(key)) {
  @Override public void updateUI() {
    super.updateUI();
    boolean b = UIManager.getLookAndFeelDefaults().getBoolean(key);
    setSelected(b);
    LookAndFeel laf = UIManager.getLookAndFeel();
    log.append(String.format("%s%n  %s: %s%n", laf, key, b));
    UIManager.put(key, b);
  }
};

JButton button = new JButton("JColorChooser.showDialog(...)");
button.addActionListener(e -> {
  UIManager.put(key, check.isSelected());
  Color c = JColorChooser.showDialog(getRootPane(), "title", null);
  log.append(String.format("color: %s%n", c));
});
View in GitHub: Java, Kotlin

解説

  • ColorChooser.showPreviewPanelText: true(null)
    • ColorChooser.showPreviewPanelTextはデフォルトでは値が未設定でnull
    • BasicColorChooserUInullの場合はtrueとして扱うよう設定されているため、MetalLookAndFeelWindowsLookAndFeelではデフォルトでプレビューパネルにTitledBorderでテキストを表示する
    • このテキストのデフォルトは日本語環境では「プレビュー」、英語環境ではPreview
    • UIManager.put("ColorChooser.previewText", "...");で文字列を変更可能
  • ColorChooser.showPreviewPanelText: false
    • JColorChooserのプレビューパネルにテキストを表示しない
    • GTKLookAndFeelのデフォルト
    • NimbusLookAndFeelで切り替えが正しく反映されない場合がある?

参考リンク

コメント