java - JavaFX制作窗口中的JOptionPane 'Not Respond'

标签 java javafx-2 joptionpane

我正在构建一个 JavaFX 应用程序并使用 JOptionPane 来显示对话框

我遇到的问题之一是创建一个新对话框并且不在 5 秒左右关闭它会导致主 JavaFX 阶段进入“无响应”状态

在新线程中运行 joptionpane 代码可以工作,但会导致对话框不是模态的,这不适合我正在构建的应用程序

这一切都在 Windows 中运行。

任何解决无响应问题的方法将不胜感激:)

编辑:我使用的代码是(来自主JavaFX线程) JOptionPane.showMessageDialog(null, "此处消息"); 也许 null 导致了问题?

最佳答案

您不能只从 FX 线程显示 JoptionPane,它是一个 Swing 组件。您有三个选择:

  1. 创建一个 Swing 应用程序并将所有 fx 节点放置在 JFXPanels 中.
  2. 仅使用 FX 节点,例如 using a modal stage或者使用外部库,例如 ControlsFX (仅限 JavaFX 8,但还有其他可与 JavaFX 2 配合使用的库)
  3. 将 JOptionPane 放在 SwingNode 中(仅限 JavaFX 8)

对于 1 和 3,您需要小心地创建/修改 Swing EDT 线程上的 Swing 组件和 JavaFX 线程上的 JavaFX 节点(除非您使用 Java 8 中提供的新 JVM 选项将两者合并)。如果您混合使用 Swing 和 JavaFX,我也不能 100% 确定模态周如何工作。

如果您正在创建 JavaFX 应用程序,则没有理由不选择 2。

关于java - JavaFX制作窗口中的JOptionPane 'Not Respond',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108927/

相关文章:

java - 读取 InputStream 后 JOptionPane.showMessageDialog 不显示。 [Java]

java - Android UIAutomator 长按设备

java - 在 Eclipse 上设置 JBoss EAP 6.0

java - JOptionPane 尝试检索选择了哪个按钮

java - 如何支持 JavaFX 2.2 中的辅助技术?

java - 我如何以编程方式同时将超过 1 种样式应用于单个节点

java - 长字符串自动换行

java - 如何在 Android 4.4 中设置准确的重复闹钟?

c# - 从 C++、C# 和 Java 的角度来看,Windows 编程是什么?

javascript - 从 JavaFX 访问 Javascript 变量