JOptionPane对话框导致JavaFX阶段为;“没有回应”;

JOptionPane对话框导致JavaFX阶段为;“没有回应”;,java,swing,javafx-8,joptionpane,freeze,Java,Swing,Javafx 8,Joptionpane,Freeze,我有一个JavaFX窗口(的子类),可以从中打开对话框。例如,当用户单击特定的菜单选项时,会像这样打开确认对话框: int choice = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); // do something based on the choice... 问题是,当对话框打开时,单击Java

我有一个JavaFX窗口(的子类),可以从中打开对话框。例如,当用户单击特定的菜单选项时,会像这样打开确认对话框:

int choice = JOptionPane.showConfirmDialog(null, message, title,
            JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
// do something based on the choice...
问题是,当对话框打开时,单击JavaFX窗口会使窗口认为它“没有响应”,并使其变为白色。但是,关闭对话框后,窗口将恢复正常。这种行为基本上是正确的,因为在对话框关闭之前,用户不应该能够与窗口交互,但是如果他们单击窗口,窗口不应该出现崩溃


我不确定这个问题的解决方案是什么。窗口线程是否可以暂停,直到JOptionPane方法返回?

我可以问一下为什么要使用
JOptionPane
而不是?我以前没有听说过,看起来不错。可惜它需要JDK 8u40;我的项目使用JDK8U31。这是一个大学论文项目,几天后就要交了,所以我不想更新Java或者做任何可能会产生新bug的大改动!我建议您更新到Java 8u40并无论如何使用Alert,否则,用一个只适用于您选择的JavaFX版本的JavaFX解决方案替换JOptionPane的使用(如果您搜索stackoverflow中的JavaFX对话框,有许多可用的解决方案)。如果允许,您也可以使用openjfx对话框(占用空间小)。它们与绑定在一起,无论您的Java更新如何,它们都可以工作。如果您使用
JOptionPane
,则需要在AWT事件调度线程上执行此操作。如果这是一个JavaFX应用程序,则在FX应用程序线程上调用它。如果要这样做,您需要管理多个线程(这也是鼓励您寻找JavaFX解决方案的原因之一)。