Swing/ConsumeEventOnClose の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ConsumeEventOnClose へ行く。
- Swing/ConsumeEventOnClose の差分を削除
--- category: swing folder: ConsumeEventOnClose title: JPopupMenuを開いた状態で別コンポーネントをクリックした場合のイベントを実行するかを切り替える tags: [JPopupMenu, UIManager, LookAndFeel] author: aterai pubdate: 2017-11-20T15:20:31+09:00 description: JPopupMenuを閉じるイベントが別コンポーネントをクリックすることで発生したとき、コンポーネントのクリックイベントを実行するかどうかを切り替えます。 image: https://drive.google.com/uc?id=1hqQoBKoHLGEqyn7rHxhKsyo-HBHiKTwAEQ --- * 概要 [#summary] `JPopupMenu`を閉じるイベントが別コンポーネントをクリックすることで発生したとき、コンポーネントのクリックイベントを実行するかどうかを切り替えます。 #download(https://drive.google.com/uc?id=1hqQoBKoHLGEqyn7rHxhKsyo-HBHiKTwAEQ) * サンプルコード [#sourcecode] #code(link){{ UIManager.put("PopupMenu.consumeEventOnClose", false); }} * 解説 [#explanation] - `PopupMenu.consumeEventOnClose`: `true` -- `JPopupMenu`を閉じるイベントが別コンポーネントをクリックすることで発生したとき、コンポーネントのクリックイベントを実行しない -- `WindowsLookAndFeel`や`NimbusLookAndFeel`のデフォルト -- 例: --- `JPopupMenu`を開いた状態で`Beep`ボタンをクリックしても`Beep`音は鳴らない --- `JPopupMenu`を開いた状態で`JTextField`をクリックしてもフォーカスは移動しない --- `JToolBar`を分離して別ウィンドウで`JPopupMenu`開いた状態でも、この動作は変わらない --- `JComboBox`は例外で、ドロップダウンリストが開きコンボエディタにフォーカスも移動する --- `JComboBox`のドロップダウンリストを開いた状態で`Beep`ボタンをクリックしても`Beep`音は鳴らない --- 参考: [[JPopupMenuを開く前に対象となるJTextFieldにFocusを移動する>Swing/FocusBeforePopup]] - `PopupMenu.consumeEventOnClose`: `false` -- `JPopupMenu`を閉じるイベントが別コンポーネントをクリックすることで発生したとき、コンポーネントのクリックイベントを実行する -- `MetalLookAndFeel`のデフォルト -- 例: --- `JPopupMenu`を開いた状態で`Beep`ボタンをクリックすると`Beep`音が鳴る --- `JPopupMenu`を開いた状態で`JComboBox`のコンボエディタをクリックしても`JPopupMenu`は表示状態を維持する --- `JToolBar`を分離し別ウィンドウで`JPopupMenu`開いた状態の場合、`JComboBox`のコンボエディタをクリックするとフォーカスが移動して`JPopupMenu`は非表示になる * 参考リンク [#reference] - [https://stackoverflow.com/questions/34679216/changing-nimbus-jpopupmenu-behaviour java - Changing nimbus JPopupmenu behaviour - Stack Overflow] - [https://bugs.openjdk.java.net/browse/JDK-6770445 JDK-6770445 Unable to transfer focus with single click when the combobox popup is visible - Java Bug System] - [https://bugs.openjdk.org/browse/JDK-6770445 JDK-6770445 Unable to transfer focus with single click when the combobox popup is visible - Java Bug System] - [[JToggleButtonからポップアップメニューを開く>Swing/ToolButtonPopup]] * コメント [#comment] #comment #comment