gpt4 book ai didi

java - 如果我在 JPopupMenu 外部单击,它不会关闭

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:50 24 4
gpt4 key购买 nike

我创建了一个 Java Swing 应用程序,它没有可见的主窗口,但可以通过右键单击通过其托盘图标进行控制。

我正在为此使用 JPopupMenu,但是当我在弹出菜单外单击时(例如,在另一个应用程序的窗口或桌面上),JPopupMenu 不会消失,这不是预期的行为。

最初我使用的是按预期工作的弹出菜单,但这不允许我在菜单中包含图标。

当我点击其他地方时,如何让它像预期的那样关闭?

最佳答案

//_Popup is your JPopupMenu, call this method before setting your popup to visible
public void armPopup()
{
if(_Popup != null)
{
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener()
{
@Override
public void eventDispatched(AWTEvent event) {

if(event instanceof MouseEvent)
{
MouseEvent m = (MouseEvent)event;
if(m.getID() == MouseEvent.MOUSE_CLICKED)
{
_Popup.setVisible(false);
Toolkit.getDefaultToolkit().removeAWTEventListener(this);
}
}
if(event instanceof WindowEvent)
{
WindowEvent we = (WindowEvent)event;
if(we.getID() == WindowEvent.WINDOW_DEACTIVATED || we.getID() == WindowEvent.WINDOW_STATE_CHANGED)
{
_Popup.setVisible(false);
Toolkit.getDefaultToolkit().removeAWTEventListener(this);
}
}
}

}, AWTEvent.MOUSE_EVENT_MASK | AWTEvent.WINDOW_EVENT_MASK);

}
}

关于java - 如果我在 JPopupMenu 外部单击,它不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2662208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com