首页 > 解决方案 > 阻止 Swing 弹出窗口失去焦点并关闭

问题描述

我正在为 IntelliJ IDEA 开发一个插件,它显然使用了 Swing。
对于我介绍的功能,我想阻止JPopupMenu使用JCheckBoxMenuItems 的 a 失去焦点并关闭。
你可以看到它在行动。

在此处输入图像描述

我已经调试了代码,但我不知道该怎么做,而且我也不是那么喜欢Swing
您能否向我指出有用的侦听器/代码块/防止这种情况的方法?

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

ActionPopupMenuImpl.MyMenu
ActionMenuItem

标签: javaswingintellij-idea

解决方案


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


IDEA中的Swing机制太复杂了,或许不去碰它比较好。只需知道鼠标事件由特殊的侦听器处理,然后重定向到 Component(s)。

也就是说,按住菜单ActionButton。您可以以编程方式侦听Lookup's事件:uiRefreshed

myMenuButton.click()

就这样。
您需要在 UI 刷新后调用它,因为LookupUi尺寸或位置可能已更改。

在此处输入图像描述


推荐阅读