在Java8中打开第二阶段时(单击菜单项)的错误消息

时间:2014-02-24 16:17:11

标签: javafx fxml java-8

这是我原来的帖子:

我有一个用NetBeans 8 / Java8 / JavaFX构建的应用程序。 (注意我没有SceneBuilder)

我的主应用程序窗口正常运行。我有一个菜单项调用以下函数来打开第二个窗口:

    @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 Application Thread”中的异常java.lang.IllegalArgumentException:null source

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)

....还有更多,更多......希望这足以让有人帮忙。

我也尝试过以下操作,导致相同的异常:

@FXML private void openChildWindow()抛出异常{

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();

}

发布上述内容之后,我回到应用程序并意识到我不仅在打开这些窗口时,而且在任何菜单项的任意点击时都会出现此异常,无论菜单项是什么。

有什么想法吗?

谢谢!

-Adeena

1 个答案:

答案 0 :(得分:1)

我的猜测是,您使用的是SwingUtilities.invokeLater。这不适用于JavaFX。你应该使用Platform.runLater。

相关问题