• category: swing folder: CheckIconInteriorBackground title: JCheckBoxとJRadioButtonのチェックアイコン背景色を変更する tags: [JCheckBox, JRadioButton, UIManager, WindowsClassicLookAndFeel] author: aterai pubdate: 2024-09-09T00:11:57+09:00 description: JCheckBoxとJRadioButtonのチェックアイコン内部の描画に使用するインテリア背景色などを変更します。 image: https://drive.google.com/uc?id=1JzmCMnRBtZ-wg0qef5-CsU8WgTo2XAF-

概要

JCheckBoxとJRadioButtonのチェックアイコン内部の描画に使用するインテリア背景色などを変更します。

サンプルコード

try {
  UIManager.setLookAndFeel(
    "com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
} catch (Exception ignored) {
  Toolkit.getDefaultToolkit().beep();
}
// System.setProperty("swing.noxp", "true");
UIManager.put("CheckBox.foreground", Color.RED);
UIManager.put("CheckBox.background", Color.GREEN);
UIManager.put("CheckBox.interiorBackground", Color.BLUE);

UIManager.put("RadioButton.foreground", Color.RED);
UIManager.put("RadioButton.background", Color.GREEN);
UIManager.put("RadioButton.interiorBackground", Color.BLUE);
View in GitHub: Java, Kotlin

解説

  • CheckBox.interiorBackgroundRadioButton.interiorBackground: BLUE
    • JCheckBoxJRadioButtonのチェックアイコン内部のButtonModel#isPressed()でない、かつButtonModel#isArmed()でない状態の背景色
    • WindowsClassicLookAndFeelでのみ有効
    • CheckBoxMenuItem.interiorBackgroundRadioButtonMenuItem.interiorBackgroundは存在せず無効
  • CheckBox.backgroundRadioButton.background: GREEN
    • JCheckBoxJRadioButtonのラベル背景色
      • このサンプルではJCheckBox#setOpaque(false)を設定してラベルの背景を描画しないよう設定している
    • WindowsClassicLookAndFeelの場合、ButtonModel#isPressed()、かつButtonModel#isArmed()状態のチェックアイコン内部の背景色も共有している
  • CheckBox.foregroundRadioButton.foreground: RED
    • JCheckBoxJRadioButtonのラベル文字色
    • WindowsClassicLookAndFeelの場合、チェックアイコンのチェックマーク色も共有している
    • MotifLookAndFeelの場合、JCheckBoxのチェックマーク色のみ変更可能で、JRadioButtonのチェックマーク色は変更不可

参考リンク

コメント