java - 阻止 Swing 弹出窗口失去焦点并关闭

标签 java swing intellij-idea

我正在为 IntelliJ IDEA 开发一个插件,它显然使用了 Swing。
对于我介绍的一项功能,我想阻止使用 JCheckBoxMenuItemJPopupMenu 失去焦点并关闭。
您可以看到它的实际效果。

enter image description here

我已经调试了代码,但我不知道如何做到这一点,而且我不熟悉 Swing。
您能否向我指出有用的监听器/代码块/防止这种情况的方法?

如果您想查看代码,IntelliJ 类是

ActionPopupMenuImpl.MyMenu
ActionMenuItem

最佳答案

编辑:需要找到更好的方法,因为 uiRefreshed 事件并不总是在正确的时间调用。 只需以良好的方式协调您的代码即可;)

<小时/>

IDEA中的Swing机制太复杂了,也许还是别碰比较好。只需知道鼠标事件由特殊的监听器处理,然后重定向到组件即可。

也就是说,按住菜单ActionButton。您可以以编程方式监听 LookupuiRefreshed 事件:

myMenuButton.click()

仅此而已。
您需要在刷新 UI 后调用它,因为 LookupUi 的尺寸或位置可能已更改。

enter image description here

关于java - 阻止 Swing 弹出窗口失去焦点并关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61160547/

相关文章:

java - 使用 Jconsole 分析死锁

java - 使用 "Real-Time Feeling"将行添加到 JTable

java - 超链接事件类型激活错误

Java调整图像的中心

intellij-idea - 关闭 Intellij 自动添加到 VCS/Git

java - 非法状态异常 : PsiFile not parsed for filepath/settings. 渐变。等到 onPsiFileAvailable() 被调用

java - 重数计算的最佳有效解决方案?

java - 如何为 spring-boot 应用程序设置 logging.path?

java - 使用 ClassLoader.getResource() 加载 BufferedImage

java - IDEA开发环境下maven如何管理java项目依赖的下载