JPopupMenuを開いた状態で別コンポーネントをクリックした場合のイベントを実行するかを切り替える
Total: 2389
, Today: 1
, Yesterday: 0
Posted by aterai at
Last-modified:
概要
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からポップアップメニューを開く