概要

DisabledJMenuItemがハイライト可能かどうかをLookAndFeelごとにテストします。

スクリーンショット

DisabledAreNavigable.png

サンプルコード

// UIManager.put("MenuItem.disabledAreNavigable", Boolean.TRUE);
String key = "MenuItem.disabledAreNavigable";
boolean b = UIManager.getBoolean(key);
System.out.println(key + ": " + b);
JCheckBox check = new JCheckBox(key, b) {
  @Override public void updateUI() {
    super.updateUI();
    setSelected(UIManager.getLookAndFeelDefaults().getBoolean(key));
    UIManager.put(key, isSelected());
  }
};
check.addActionListener(e -> UIManager.put(key, ((JCheckBox) e.getSource()).isSelected()));
view all

解説

  • WindowsLookAndFeel
    • UIManager.getLookAndFeelDefaults().getBoolean("MenuItem.disabledAreNavigable")の初期値はtrue
    • UIManager.put("MenuItem.disabledAreNavigable", ...)DisabledJMenuItemをハイライトするかどうかを切替可能
  • MetalLookAndFeel
    • UIManager.getLookAndFeelDefaults().getBoolean("MenuItem.disabledAreNavigable")の初期値はfalse
    • UIManager.put("MenuItem.disabledAreNavigable", Boolean.TRUE)を設定すればDisabledJMenuItemでもハイライトが可能
  • NimbusLookAndFeel
    • UIManager.getLookAndFeelDefaults().getBoolean("MenuItem.disabledAreNavigable")の初期値はfalse
    • UIManager.put("MenuItem.disabledAreNavigable", Boolean.TRUE)を設定してもDisabledJMenuItemをハイライト不可

参考リンク

コメント