使用多个FXML文件切换场景

时间:2016-05-29 19:49:33

标签: java javafx

我是Java FX的新手并试图建立一个简单的#34;应用程序由标题按钮栏和"内容区域组成"下面。 我曾经做过很多这样的事情:

  • 带有Borderpane的MainWindow.fxml:顶部区域中的MenuBar 还有一个中间区域fx:id: content的窗格。

  • 内容()

  • 的几个X.fxml文件
  • 创建obj内容的一个控制器:

    @FXML
    private Pane content;
    

    并切换内容:

    content.getChildren().clear();
    content.getChildren().add(FXMLLoader.load(getClass().getResource("Navi.fxml")));`
    
  • 初始化父级和场景的主文件:

    Parent root = FXMLLoader.load(getClass().getResource("MainWindow.fxml"));
    Stage Window = primaryStage;
    Scene scene = new Scene(root);
    scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
    Window.setTitle("ICIS - In Car Interactive System");
    Window.setScene(scene);
    Window.show();` 
    

到目前为止一切正常! 但现在我想应用SplitPane并进行内容更改"在Split Pane的每一面(TwoWindows.fxml):所以我扩展了

  • 带obj的控制器对于拆分窗格的每个窗格,将fx:id分配给该窗格,并希望控制它们与之前的示例类似。

    @FXML
    private Pane SecondWindow1;
    SecondWindow1.getChildren().add(FXMLLoader.load(getClass().getResource("Navi.fxml")));
    

好吧,在编译期间一切都很好,但是在运行时我得到了Null错误异常,因此我认为控制器不知道SecondWindow1(SlitPane的左半部分)。 我还假设,这是因为我在开始时只初始化MainWindow.fxml(包括内容区域),而不是包含SecondWindow1对象的TwoWindows.fxml(SplitPane)。

我已经尝试了几个小时才能解决它,但显然我正在忽视某事。有人知道如何解决这个问题吗?每个FXML文件需要一个控制器吗?

0 个答案:

没有答案