Swing/CrossMenuMnemonic のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CrossMenuMnemonic へ行く。
- 1 (2019-10-07 (月) 16:06:13)
- 2 (2021-05-12 (水) 03:37:36)
- 3 (2022-08-20 (土) 22:15:25)
- 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
概要
トップレベルの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
:true
MetalLookAndFeel
、MotifLookAndFeel
のデフォルト- トップレベルの
JMenu
の表示中に別のトップレベルJMenu
を開くMnemonic
キーが入力された場合、別のトップレベルJMenu
のポップアップに切り替わる - たとえばこのサンプルでAlt+F、Alt+Eを入力すると
Edit
メニューがポップアップ表示状態になる
Menu.crossMenuMnemonic
:false
WindowsLookAndFeel
、NimbusLookAndFeel
のデフォルト- トップレベルの
JMenu
の表示中に別のトップレベルJMenu
を開くMnemonic
キーが入力されても無視される(元のトップレベルJMenu
のポップアップ表示が継続する) - たとえばこのサンプルでAlt+F、Alt+Eを入力すると
File
メニューがポップアップ表示状態になる
- トップレベルではない
JMenu
(JToolBar
直下ではなく、JPopupMenu
以下に追加されているJMenu
)にはこの設定は無関係 UIManager.put("Menu.crossMenuMnemonic", ...);
で設定を切り替えた場合、SwingUtilities.updateComponentTreeUI(...)
などでLoolAndFeel
のUI
プロパティを更新する必要がある