Swing/ConsumeEventOnClose のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- 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?export=view&id=1hqQoBKoHLGEqyn7rHxhKsyo-HBHiKTwAEQ
概要
JPopupMenu
を閉じるイベントが別コンポーネントをクリックすることで発生したとき、コンポーネントのクリックイベントを実行するかどうかを切り替えます。
Screenshot

Advertisement
サンプルコード
解説
PopupMenu.consumeEventOnClose
:true
JPopupMenu
を閉じるイベントが別コンポーネントをクリックすることで発生したとき、コンポーネントのクリックイベントを実行しないWindowsLookAndFeel
やNimbusLookAndFeel
のデフォルト- 例:
JPopupMenu
を開いた状態でBeep
ボタンをクリックしてもBeep
音は鳴らないJPopupMenu
を開いた状態でJTextField
をクリックしてもフォーカスは移動しないJToolBar
を分離して別ウィンドウでJPopupMenu
開いた状態でも、この動作は変わらないJComboBox
は例外で、ドロップダウンリストは開き、コンボエディタにフォーカスは移動するJComboBox
のドロップダウンリストを開いた状態でBeep
ボタンをクリックしてもBeep
音は鳴らない- 参考: JPopupMenuを開く前に対象となるJTextFieldにFocusを移動する
PopupMenu.consumeEventOnClose
:false
JPopupMenu
を閉じるイベントが別コンポーネントをクリックすることで発生したとき、コンポーネントのクリックイベントを実行するMetalLookAndFeel
のデフォルト- 例:
JPopupMenu
を開いた状態でBeep
ボタンをクリックするとBeep
音が鳴るJPopupMenu
を開いた状態でJComboBox
のコンボエディタをクリックしてもJPopupMenu
は閉じないJToolBar
を分離し別ウィンドウでJPopupMenu
開いた状態の場合、JComboBox
のコンボエディタをクリックするとフォーカスが移動してJPopupMenu
は閉じる
参考リンク
- java - Changing nimbus JPopupmenu behaviour - Stack Overflow
- JDK-6770445 Unable to transfer focus with single click when the combobox popup is visible - Java Bug System
- JToggleButtonからポップアップメニューを開く