• category: swing folder: DisabledAreNavigable title: DisabledなJMenuItemのハイライトをテスト tags: [JMenuItem, UIManager, LookAndFeel] author: aterai pubdate: 2013-03-25T00:06:25+09:00 description: DisabledなJMenuItemがハイライト可能かどうかをLookAndFeelごとにテストします。 image: https://lh4.googleusercontent.com/--XCIC-Dhgwk/UU8M_ixmZeI/AAAAAAAABoU/aXonTNvOs0A/s800/DisabledAreNavigable.png

概要

DisabledJMenuItemがハイライト可能かどうかをLookAndFeelごとにテストします。 無効化状態のJMenuItemがハイライト可能かどうかをLookAndFeelごとにテストします。

サンプルコード

#spandel
UIManager.put("MenuItem.disabledAreNavigable", Boolean.TRUE);
#spanend
#spanadd
// UIManager.put("MenuItem.disabledAreNavigable", Boolean.TRUE);
#spanend
#spanadd
String key = "MenuItem.disabledAreNavigable";
#spanend
#spanadd
boolean b = UIManager.getBoolean(key);
#spanend
#spanadd
System.out.println(key + ": " + b);
#spanend
#spanadd
JCheckBox check = new JCheckBox(key, b) {
#spanend
  @Override public void updateUI() {
    super.updateUI();
    setSelected(UIManager.getLookAndFeelDefaults().getBoolean(key));
    UIManager.put(key, isSelected());
  }
#spanadd
};
#spanend
#spanadd
check.addActionListener(e -> UIManager.put(key, ((JCheckBox) e.getSource()).isSelected()));
#spanend
View in GitHub: Java, Kotlin

解説

  • WindowsLookAndFeelの場合、UIManager.getBoolean("MenuItem.disabledAreNavigable")のデフォルトはtrueで、DisabledJMenuItemでもハイライトが可能
  • MetalLookAndFeelの場合、UIManager.getBoolean("MenuItem.disabledAreNavigable")のデフォルトはfalseだが、UIManager.put("MenuItem.disabledAreNavigable", Boolean.TRUE)とすれば、DisabledJMenuItemでもハイライトが可能
  • WindowsLookAndFeel
    • UIManager.getLookAndFeelDefaults().getBoolean("MenuItem.disabledAreNavigable")の初期値はBoolean.TRUE
    • UIManager.put("MenuItem.disabledAreNavigable", ...)で無効化(Disabled)したJMenuItemをハイライトするかどうかを切り替え可能
  • MetalLookAndFeel
    • UIManager.getLookAndFeelDefaults().getBoolean("MenuItem.disabledAreNavigable")の初期値はBoolean.FALSE
    • UIManager.put("MenuItem.disabledAreNavigable", Boolean.TRUE)を設定すれば無効化(Disabled)したJMenuItemでもハイライトが可能
  • NimbusLookAndFeel
    • UIManager.getLookAndFeelDefaults().getBoolean("MenuItem.disabledAreNavigable")の初期値はBoolean.FALSE
    • UIManager.put("MenuItem.disabledAreNavigable", Boolean.TRUE)を設定しても無効化(Disabled)したJMenuItemのハイライトは不可

参考リンク

コメント