Java 如何在swing中等待弹出菜单关闭

Java 如何在swing中等待弹出菜单关闭,java,swing,events,mouseevent,jpopup,Java,Swing,Events,Mouseevent,Jpopup,我是swing新手,我相信还有另一种方法,但由于akward api的一些设计,我必须植入一个处理程序,接收MouseeEvent并返回Result。我想向用户显示弹出菜单,等待它关闭并根据用户选择返回值。 怎么做? 提前谢谢。 确定具体问题: Substance TabCloseCallback接口有以下方法 public TabCloseKind onAreaClick(JTabbedPane tabbedPane, int tabIndex, MouseEvent m

我是swing新手,我相信还有另一种方法,但由于akward api的一些设计,我必须植入一个处理程序,接收MouseeEvent并返回Result。我想向用户显示弹出菜单,等待它关闭并根据用户选择返回值。 怎么做? 提前谢谢。 确定具体问题: Substance TabCloseCallback接口有以下方法

 public TabCloseKind onAreaClick(JTabbedPane tabbedPane,
          int tabIndex, MouseEvent mouseEvent);

我希望根据用户的选择,在调用nad返回值时显示弹出菜单。

通过调用查看您可以看到的事件


特别是,你可以接到一个电话。

看看你可以通过电话看到的事件


特别是,您可以得到一个调用。

您可以在弹出类中处理关闭事件,并将变量设置为所需的数据

yourWindow.addWindowListener(new WindowAdapter() {

    @Override
    public void windowClosing(WindowEvent e) {

        // catch what you want
    }
});

您可以在弹出类中处理关闭事件,并将变量设置为所需的数据

yourWindow.addWindowListener(new WindowAdapter() {

    @Override
    public void windowClosing(WindowEvent e) {

        // catch what you want
    }
});
看看

这将允许您显示一个窗口,该窗口将被阻止,直到用户将其关闭


这将允许您显示一个窗口,该窗口将一直阻止,直到用户关闭它

这没关系,但我想“阻止”当前线程,而不阻止整个ui,直到弹出菜单关闭。使用JOptionPane(默认情况下阻止代码执行)而不是JPopup,将JButtons而不是JMenuItems放在那里,确保可以将JMenuItems放在JPanel中,但是为什么要费心呢?我想@MadProgrammer的答案会帮你找到你想去的地方。我听到“popup menu”(弹出菜单)时挂断了电话,但我怀疑你可以通过一个对话框来做任何你需要做的事情。没关系,但我想“阻止”当前线程,而不是阻塞整个ui,直到弹出菜单关闭。使用JOptionPane(默认情况下阻止代码执行)代替JPopup,将JButtons而不是JMenuItems放在那里,当然可以把JMenuItems放到JPanel上,但是为什么要费心呢?我想@MadProgrammer的答案会帮你找到你想去的地方。我听到“弹出菜单”时挂断了电话,但我怀疑你可以通过对话来做任何你需要做的事情。出于好奇,我认为这没有必要,请说明原因出于好奇,我认为这没有必要,请说明原因