JMenuの表示中に別JMenu表示のMnemonicキーが入力された場合の動作を設定する
Total: 1862, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
トップレベルのJMenuの表示中に別のトップレベルJMenuを開くMnemonicキーが入力された場合、それらのポップアップ表示を切り替えるかどうかを設定します。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
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プロパティを更新する必要がある