概要

MetalLookAndFeelJTabbedPaneで、タブエリアの背景色などを変更するテストをしています。

サンプルコード

UIManager.put("TabbedPane.shadow",                Color.GRAY);
UIManager.put("TabbedPane.darkShadow",            Color.GRAY);
UIManager.put("TabbedPane.light",                 Color.GRAY);
UIManager.put("TabbedPane.highlight",             Color.GRAY);
UIManager.put("TabbedPane.tabAreaBackground",     Color.GRAY);
UIManager.put("TabbedPane.unselectedBackground",  Color.GRAY);
UIManager.put("TabbedPane.background",            Color.GRAY);
UIManager.put("TabbedPane.foreground",            Color.WHITE);
UIManager.put("TabbedPane.focus",                 Color.WHITE);
UIManager.put("TabbedPane.contentAreaColor",      Color.WHITE);
UIManager.put("TabbedPane.selected",              Color.WHITE);
UIManager.put("TabbedPane.selectHighlight",       Color.WHITE);
// UIManager.put("TabbedPane.borderHighlightColor",  Color.WHITE);
// Maybe typo but defined in MetalTabbedPaneUI
UIManager.put("TabbedPane.borderHightlightColor",  Color.WHITE);
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、UIManager.put("TabbedPane.unselectedBackground", Color.GREEN);などを利用してMetalLookAndFeelでのタブエリアの背景色などを変更可能です。

  • BasicLookAndFeelMetalLookAndFeelでのみ有効
  • JPanelタブ内に配置されているJCheckBoxJTabbedPaneを不透明に設定可能
  • JPanelタブ内に配置されているJComboBoxTabbedPane.tabAreaBackgroundなどのキーを指定し、その色の変更が可能
  • タブ文字色はJTabbedPane#setForegroundAt(...)メソッドを使用して切り替え可能
  • TabbedPane.borderHightlightColorはおそらくTabbedPane.borderHighlightColorの書き間違い
    • 現状(Java 11で確認)のMetalTabbedPaneUIではTabbedPane.borderHightlightColorが定義されているため、こちらで色変更する必要がある

参考リンク

コメント