Javafx 在Java8中(单击菜单项)打开第二阶段时出现错误消息
这是我原来的帖子: 我有一个内置在NetBeans 8/Java8/JavaFX中的应用程序。(请注意,我没有SceneBuilder) 我的主应用程序窗口运行正常。我有一个菜单项,它调用以下函数来打开第二个窗口:Javafx 在Java8中(单击菜单项)打开第二阶段时出现错误消息,javafx,fxml,java-8,Javafx,Fxml,Java 8,这是我原来的帖子: 我有一个内置在NetBeans 8/Java8/JavaFX中的应用程序。(请注意,我没有SceneBuilder) 我的主应用程序窗口运行正常。我有一个菜单项,它调用以下函数来打开第二个窗口: @FXML private void openChildWindowAlt() throws Exception { Group root = new Group(); Stage stage = new Stage();
@FXML
private void openChildWindowAlt() throws Exception {
Group root = new Group();
Stage stage = new Stage();
AnchorPane frame = FXMLLoader.load(getClass().getResource("fxml_childWindow1.fxml"));
root.getChildren().add(frame);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
当我选择菜单按钮时,我的第二个阶段会按预期显示,但我得到以下异常:
线程“JavaFX应用程序线程”java.lang.IllegalArgumentException中的异常:空源
at java.util.EventObject.<init>(EventObject.java:56)
at java.awt.AWTEvent.<init>(AWTEvent.java:337)
at sun.awt.UngrabEvent.<init>(UngrabEvent.java:48)
at javafx.embed.swing.SwingNode$10.handle(SwingNode.java:414)
at javafx.embed.swing.SwingNode$10.handle(SwingNode.java:410)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.event.Event.fireEvent(Event.java:204)
}
在发布上述内容后,我回到应用程序,意识到我不仅在打开这些窗口时,而且在任何菜单项的任何单击上都会遇到此异常,无论菜单项做什么
有什么想法吗
谢谢
-Adeena我猜你用了SwingUtilities.invokeLater。这不适用于JavaFX。您应该使用Platform.runLater.确定-我发现了有问题的代码(我将其与我编写的另一个具有类似顶部结构但内容不同的应用程序进行了比较),并且在我的控制器中的initialize函数中。。。我用的是摇摆舞,有些东西很时髦。当我注释掉这段代码时,我没有得到异常。不知道这和菜单有什么关系。。。但就目前而言,我没有异常……异常的来源可能在堆栈跟踪的“还有更多,更多”部分!我确实。。。我不知道它不能与JavaFX一起使用。谢谢一年前,我在探索JavaFX、Swing和OSGi,并在这里写了一些关于它的文章:-应该有使用Swing和JavaFX及其后台工作人员的代码:-)当然我会看一看!这是否适用于Java8?我在这里和那里发现了一些似乎不适用于Java8的小东西……我使用Java8EA来实现这些东西(至少我认为是这样,已经有一段时间了)
Stage stage = new Stage();
AnchorPane root = new AnchorPane();
TabPane myTabPane = new TabPane();
Tab tab1 = new Tab("blue");
Tab tab2 = new Tab("purple");
myTabPane.getTabs().addAll(tab1,tab2);
root.getChildren().add(myTabPane);
stage.setScene(new Scene(root,1200,800));
stage.show();