---
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
---
* 概要 [#summary]
無効化状態の`JMenuItem`がハイライト可能かどうかを`LookAndFeel`ごとにテストします。

#download(https://lh4.googleusercontent.com/--XCIC-Dhgwk/UU8M_ixmZeI/AAAAAAAABoU/aXonTNvOs0A/s800/DisabledAreNavigable.png)

* サンプルコード [#sourcecode]
#code(link){{
// 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()));
check.addActionListener(e ->
    UIManager.put(key, ((JCheckBox) e.getSource()).isSelected()));
}}

* 解説 [#explanation]
- `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`のハイライトは不可

* 参考リンク [#reference]
- [https://bugs.openjdk.org/browse/JDK-4515765 JDK-4515765 Win L&F: Disabled menu items should show highlight - Java Bug System]
- [https://bugs.openjdk.org/browse/JDK-6325555 JDK-6325555 Only Partial Fix in for 4515765 in B53 Swing PIT - Java Bug System]

* コメント [#comment]
#comment
#comment