Swing/MenuCancelMode のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/MenuCancelMode へ行く。
- 1 (2019-10-14 (月) 03:03:21)
- 2 (2021-05-14 (金) 19:24:45)
- category: swing folder: MenuCancelMode title: JMenuから開いたJPopupMenuをキャンセルした場合の動作を変更する tags: [JMenu, JPopupMenu, LookAndFeel, UIManager] author: aterai pubdate: 2019-10-14T03:01:26+09:00 description: JMenuから開いたJPopupMenuをキャンセルした場合、カレントのサブメニューから閉じるか、すべてのメニューツリーを閉じるかを設定します。 image: https://drive.google.com/uc?id=1KMgWDSQkZS95tcgDW87x4bzZd4_M3mdV
概要
JMenu
から開いたJPopupMenu
をキャンセルした場合、カレントのサブメニューから閉じるか、すべてのメニューツリーを閉じるかを設定します。
Screenshot
Advertisement
サンプルコード
String key = "Menu.cancelMode";
String cancelMode = UIManager.getString(key);
System.out.println(key + ": " + cancelMode);
boolean defaultMode = "hideMenuTree".equals(cancelMode);
JRadioButton hideMenuTreeRadio = makeRadioButton("hideMenuTree", defaultMode);
JRadioButton hideLastSubmenuRadio = makeRadioButton("hideLastSubmenu", !defaultMode);
Box box = Box.createHorizontalBox();
box.setBorder(BorderFactory.createTitledBorder(key));
ItemListener handler = e -> {
if (e.getStateChange() == ItemEvent.SELECTED) {
JRadioButton r = (JRadioButton) e.getSource();
UIManager.put(key, r.getText());
}
};
ButtonGroup bg = new ButtonGroup();
Stream.of(hideLastSubmenuRadio, hideMenuTreeRadio).forEach(r -> {
r.addItemListener(handler);
bg.add(r);
box.add(r);
});
add(box);
View in GitHub: Java, Kotlin解説
UIManager.put("Menu.cancelMode", "hideLastSubmenu");
- ESCキー入力によるキャンセルでメニューツリーの最後に開かれた
JPopupMenu
のみ閉じる BasicLookAndFeel
、MetalLookAndFeel
、WindowsLookAndFeel
などのデフォルト
- ESCキー入力によるキャンセルでメニューツリーの最後に開かれた
UIManager.put("Menu.cancelMode", "hideMenuTree");
- ESCキー入力によるキャンセルですべてのメニューツリーの
JPopupMenu
を閉じる MotifLookAndFeel
、GTKLookAndFeel
のデフォルト
- ESCキー入力によるキャンセルですべてのメニューツリーの