Swing/ConsumeEventOnClose のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ConsumeEventOnClose へ行く。
- 1 (2017-11-20 (月) 15:23:10)
- 2 (2018-02-15 (木) 14:23:42)
- 3 (2019-06-26 (水) 22:04:18)
- 4 (2021-03-03 (水) 07:25:49)
- 5 (2022-08-20 (土) 22:15:25)
- 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からポップアップメニューを開く