Swing/CrossMenuMnemonic のバックアップ(No.5)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CrossMenuMnemonic へ行く。
- category: swing folder: CrossMenuMnemonic title: JMenuの表示中に別JMenu表示のMnemonicキーが入力された場合の動作を設定する tags: [JMenu, Mnemonic, UIManager, LookAndFeel] author: aterai pubdate: 2019-10-07T15:56:56+09:00 description: トップレベルのJMenuの表示中に別のトップレベルJMenuを開くMnemonicキーが入力された場合、それらのポップアップ表示を切り替えるかどうかを設定します。 image: https://drive.google.com/uc?id=1dyq9CF4OHfr0yYxPQYInJOIbHQMEYtuJ
Summary
トップレベルのJMenuの表示中に別のトップレベルJMenuを開くMnemonicキーが入力された場合、それらのポップアップ表示を切り替えるかどうかを設定します。
Screenshot

Advertisement
サンプルコード
String key = "Menu.crossMenuMnemonic";
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());
SwingUtilities.updateComponentTreeUI(getRootPane().getJMenuBar());
});
View in GitHub: Java, Kotlin解説
Menu.crossMenuMnemonic:trueMetalLookAndFeel、MotifLookAndFeelのデフォルト- トップレベルの
JMenuの表示中に別のトップレベルJMenuを開くMnemonicキーが入力された場合、別のトップレベルJMenuのポップアップに切り替わる - たとえばこのサンプルでAlt+F、Alt+Eキーを入力すると
Editメニューがポップアップ表示状態になる
Menu.crossMenuMnemonic:falseWindowsLookAndFeel、NimbusLookAndFeelのデフォルト- トップレベルの
JMenuの表示中に別のトップレベルJMenuを開くMnemonicキーが入力されても無視される(元のトップレベルJMenuのポップアップ表示が継続する) - たとえばこのサンプルでAlt+F、Alt+Eキーを入力すると
Fileメニューがポップアップ表示状態になる
- トップレベルではない
JMenu(JToolBar直下ではなくJPopupMenu以下に追加されているJMenu)にはこの設定は無関係 UIManager.put("Menu.crossMenuMnemonic", ...);で設定を切り替えた場合、SwingUtilities.updateComponentTreeUI(...)などでLoolAndFeelのUIプロパティを更新する必要がある