Java 如何阻止JOptionPane禁用根框架

Java 如何阻止JOptionPane禁用根框架,java,swing,jframe,joptionpane,modality,Java,Swing,Jframe,Joptionpane,Modality,如何在不禁用任何当前打开的帧的情况下显示JOptionPane 我有一个带启动和停止按钮的JFrame。在任何时候,我都希望用户能够按下主框架上的“停止”按钮,停止次线程(由开始按钮启动) 但是,第二个运行的线程有时会打开一个JOptionPane。当它这样做时,主机被禁用,用户不能按下停止按钮 (当它连续打开多个JoptionPane时,试图阻止它变得非常令人沮丧) 我试过了 JOptionPane.showMessageDialog(null, "It's Broken Mate"); 没

如何在不禁用任何当前打开的帧的情况下显示JOptionPane

我有一个带启动和停止按钮的JFrame。在任何时候,我都希望用户能够按下主框架上的“停止”按钮,停止次线程(由开始按钮启动)

但是,第二个运行的线程有时会打开一个JOptionPane。当它这样做时,主机被禁用,用户不能按下停止按钮

(当它连续打开多个JoptionPane时,试图阻止它变得非常令人沮丧)

我试过了

JOptionPane.showMessageDialog(null, "It's Broken Mate");
没有成功。我还尝试将JFrame传递给它以禁用:

JOptionPane.showMessageDialog(new JFrame(), "Still No Go");
这也失败了。我甚至试过

JFrame frame = new JFrame();
frame.setVisible(true);
JOptionPane.showMessageDialog(frame, "CMON Please");
而且,

JFrame frame = new JFrame();
frame.setVisible(true);
JOptionPane.setRootFrame(frame);
JOptionPane.showMessageDialog(frame, "I'm getting angry now.");
而且还是。没有什么。不起作用。它会打开一个消息框,所有内容都被禁用。在再次启用任何功能之前,我必须关闭JOptionPane

有什么想法吗


干杯

作业窗格
s是,因此您不能直接执行此操作

所有对话框都是模态的。每个showXxxDialog方法都会阻止调用方,直到用户的交互完成

您必须使用
JDialog
或类似工具

    JOptionPane p = new JOptionPane("I'm getting happy now.");
    JDialog k = p.createDialog(":-)");
    k.setModal(false); // Makes the dialog not modal
    k.setVisible(true);

啊,是的!太棒了。非常感谢!:-)