从控制器加载不同的FXML文件

时间:2018-05-21 04:43:24

标签: java user-interface javafx fxml

我道歉,因为我理解这个问题本质上有点宽泛。我想要实现的是能够在满足特定条件时加载不同的FXML文件(位于不同的包中),例如当按下按钮或满足某个条件时。到目前为止,我已经设法在按下按钮时加载文件。

@FXML
private AnchorPane rootPane;

@FXML
private Button btn;


@FXML
private void loadLoginWindow(javafx.event.ActionEvent event) throws IOException {

    AnchorPane pane = FXMLLoader.load(getClass().getResource("login/MainWindow.fxml"));

    rootPane.getChildren().setAll(pane);
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
} 

它工作正常,但只有一个按钮和一个处理程序,只要添加另一个按钮就停止工作,似乎只有一个按钮可以工作。很明显,我错过了一堆重要信息,但我所看过的每一个教程都没有解决这一问题,因为他们甚至没有达到目标(它们都围绕着一个文件,或者他们依赖于隐藏和显示同一文件中的窗格)

有没有人有任何好的教程或综合指南来做这类事情?

提前致谢。

1 个答案:

答案 0 :(得分:1)

可能发生的情况是FXML文件中控制器的链接可能不正确。即使文件位置可能不存在,应用程序仍将构建。

<AnchorPane id="AnchorPane" fx:controller="main.MainController">

fx:controller中的路径需要正确。

干杯!