Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX:如何在没有测试阶段的情况下显示警报?_Java_User Interface_Exception_Javafx - Fatal编程技术网

JavaFX:如何在没有测试阶段的情况下显示警报?

JavaFX:如何在没有测试阶段的情况下显示警报?,java,user-interface,exception,javafx,Java,User Interface,Exception,Javafx,我使用JavaFX作为GUI,它等待一些用户的输入并尝试处理这些输入。如果出现任何异常,将打开javafx.scene.control.Alert向用户显示异常。该警报的调用在处理异常的方法中完成 这个方法应该被测试:对于一个特殊的输入,检查是否抛出了正确的异常。正确的异常实际上被抛出,处理方法被调用,但现在问题来了:在测试用例中没有实际的应用程序运行,也没有创建任何阶段。显然,正因为如此,警报对话框的创建引发了异常: java.lang.IllegalStateException: Toolk

我使用JavaFX作为GUI,它等待一些用户的输入并尝试处理这些输入。如果出现任何异常,将打开javafx.scene.control.Alert向用户显示异常。该警报的调用在处理异常的方法中完成

这个方法应该被测试:对于一个特殊的输入,检查是否抛出了正确的异常。正确的异常实际上被抛出,处理方法被调用,但现在问题来了:在测试用例中没有实际的应用程序运行,也没有创建任何阶段。显然,正因为如此,警报对话框的创建引发了异常:

java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:273)
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:268)
at com.sun.javafx.application.PlatformImpl.setPlatformUserAgentStylesheet(PlatformImpl.java:550)
at com.sun.javafx.application.PlatformImpl.setDefaultPlatformUserAgentStylesheet(PlatformImpl.java:512)
at javafx.scene.control.Control.<clinit>(Control.java:87)
... 46 more
java.lang.IllegalStateException:工具包未初始化
位于com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:273)
位于com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:268)
位于com.sun.javafx.application.PlatformImpl.setPlatformUserAgentStylesheet(PlatformImpl.java:550)
位于com.sun.javafx.application.PlatformImpl.setDefaultPlatformUserAgentStylesheet(PlatformImpl.java:512)
位于javafx.scene.control.control.(control.java:87)
... 46多
这会导致测试失败,因为现在会引发另一个不正确的异常


那么:有没有办法在没有舞台的情况下显示警报

我很确定你不用舞台就能发出警报。你能提供一些你的代码吗?我希望它有点像这样:你能提供一些代码吗?我想你有这样的东西吗?}catch(异常e){Alert Alert=new Alert(Alert.AlertType.ERROR);Alert.setTitle(“此处的错误标题”);Alert.setContentText(“某些内容”);Alert.show();}@Jouke请不要在注释中发布代码。这与是否显示
阶段
无关:错误表明JavaFX工具包尚未初始化
Application.launch()
需要被调用才能发生这种情况(在实例化
JFXPanel
时,可以使用一种变通方法,但这感觉有点脆弱)。我的答案(这是一个完全不同的问题)有一个启动FX应用程序的机制,它除了启动FX工具包外,基本上什么都不做。我很确定你可以在没有阶段的情况下调用警报。你能提供一些你的代码吗?我希望它有点像这样:你能提供一些代码吗?我想你有这样的东西吗?}catch(异常e){Alert Alert=new Alert(Alert.AlertType.ERROR);Alert.setTitle(“此处的错误标题”);Alert.setContentText(“某些内容”);Alert.show();}@Jouke请不要在注释中发布代码。这与是否显示
阶段
无关:错误表明JavaFX工具包尚未初始化
Application.launch()
需要被调用才能发生这种情况(在实例化
JFXPanel
时,可以使用一种变通方法,但这感觉有点脆弱)。我的答案(这是一个完全不同的问题)有一个启动FX应用程序的机制,它基本上除了启动FX工具包之外什么都不做。