我正在构建一个 JavaFX 应用程序并使用 JOptionPane 来显示对话框
我遇到的问题之一是创建一个新对话框并且不在 5 秒左右关闭它会导致主 JavaFX 阶段进入“无响应”状态
在新线程中运行 joptionpane 代码可以工作,但会导致对话框不是模态的,这不适合我正在构建的应用程序
这一切都在 Windows 中运行。
任何解决无响应问题的方法将不胜感激:)
编辑:我使用的代码是(来自主JavaFX线程)
JOptionPane.showMessageDialog(null, "此处消息");
也许 null 导致了问题?
最佳答案
您不能只从 FX 线程显示 JoptionPane,它是一个 Swing 组件。您有三个选择:
- 创建一个 Swing 应用程序并将所有 fx 节点放置在 JFXPanels 中.
- 仅使用 FX 节点,例如 using a modal stage或者使用外部库,例如 ControlsFX (仅限 JavaFX 8,但还有其他可与 JavaFX 2 配合使用的库)
- 将 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/