0

我对 javafx 很陌生。我看到了许多在屏幕之间切换的方法,但经过一番思考,它们不知何故不起作用,我想到了使用这种逻辑。在我在项目中走得太远之前,我需要知道是否可以建议我继续使用它。

 @FXML
public void nextAfterPassangerButtonClicked() throws Exception {

    MainScreenDatabaseHandler a = new MainScreenDatabaseHandler(getId(), getFirstName(), getLastName(), getOtherName(), getSexSelection(), getMobileNumber(), getEmergencyContact(), getHomeAdress());
    //send collected data to database
    passangerPaymentAnchorPane.getChildren().remove(0);
    Node node = FXMLLoader.load(getClass().getResource("CargoPayment.fxml"));
    passangerPaymentAnchorPane.getChildren().add(node);
}

//Handle All Menu Bar Buttons
@FXML
public void startPageBarButtonClicked() throws Exception {
    passangerPaymentAnchorPane.getChildren().remove(0);
    mainAnchor.getChildren().remove(0);
    Node node = FXMLLoader.load(getClass().getResource("MainScreen.fxml"));
    mainAnchor.getChildren().add(node);
}

public void allPassangersMenuBarButtonClicked() throws Exception {

    passangerPaymentAnchorPane.getChildren().remove(0);
    Node node = FXMLLoader.load(getClass().getResource("AllPassangersView.fxml"));
    passangerPaymentAnchorPane.getChildren().add(node);
}

当我单击其中一个按钮时,它会删除当前场景并加载相关的 fxml。谢谢你。passangerPaymentAnchorPane 的作用类似于其他 fxml 加载和卸载的母窗格

4

2 回答 2

1

我也一直在努力解决 javaFx 多屏问题。最后我解决如下。我在github中添加了代码

https://github.com/nrkkalyan/javafx

随意评论或任何建议。

于 2014-01-23T00:21:59.963 回答
1

主要方法没有任何问题,即有一些布局类似于加载 fxml 文件的容器。它的孩子将在某些事件动作上被替换。我建议在项目增长之前重构您的代码,例如loadView(String fxmlFile)将上面重复的“layout.remove - fxmlloader.load() - layout.add()”对重构为的方法。此外,由于 fxml 文件的解析和加载是一项昂贵的工作,所以只能懒惰地更新视图,例如:

Pane cargoPaymentPane;
CargoPaymentController cargoPaymentController;
FXMLLoader fxmlLoader = new FXMLLoader();

public void loadCargoPaymentView(String newCargoData) {
    if(cargoPaymentPane == null) { 
        cargoPaymentPane = fxmlLoader.load(getClass().getResource("CargoPayment.fxml").openStream());
        cargoPaymentController = (CargoPaymentController) fxmlLoader.getController();
    }
    cargoPaymentController.updateView(newCargoData);
}
于 2013-07-17T12:46:16.687 回答