Block Swing всплывающее окно от потери фокуса и закрытия - PullRequest
0 голосов
/ 11 апреля 2020

Я разрабатываю плагин для IntelliJ IDEA, который, очевидно, использует Swing.
Для функции, которую я представил, я бы хотел остановить JPopupMenu, который использует JCheckBoxMenuItem s, от потери фокуса и закрытия.
Вы можете увидеть это в действии.

enter image description here

Я отладил код, но также не мог понять, как это сделать. если я не , что в Swing.
Не могли бы вы указать мне полезных слушателей / блоков кода / способов предотвратить это?

Если вы хотите увидеть код, IntelliJ классы

ActionPopupMenuImpl.MyMenu
ActionMenuItem

1 Ответ

0 голосов
/ 11 апреля 2020

Редактировать: необходимо найти лучший способ, так как событие uiRefreshed не всегда вызывается в нужное время. Просто координируйте ваш код в хорошем смысле;)


Механизм Swing в IDEA слишком сложен, и, возможно, лучше его не трогать. Просто знайте, что события мыши обрабатываются специальным слушателем, а затем перенаправляются в Компонент (ы).

Тем не менее, удержание в меню ActionButton. Вы можете прослушивать событие Lookup uiRefreshed и программно:

myMenuButton.click()

Вот и все.
Вы должны вызывать его после обновления пользовательского интерфейса, поскольку LookupUi может иметь изменено в размере или местоположении.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...