所以我一直致力于JavaFX项目,我的工作流程非常简单。我使用了几个不同的AnchorPanes,每个用户都会填写一些信息并继续下一个AnchorPane。每当他们移动到下一个AnchorPane时,我使用以下代码加载新的AnchorPane。
private Initializable replaceSceneContent(String fxml) throws Exception {
FXMLLoader loader = new FXMLLoader();
InputStream in = MyClass.class.getResourceAsStream(fxml);
loader.setBuilderFactory(new JavaFXBuilderFactory());
loader.setLocation(Caster.class.getResource(fxml));
AnchorPane page;
try {
page = (AnchorPane) loader.load(in);
} finally {
in.close();
}
Scene scene = new Scene(page, APP_WIDTH, APP_HEIGHT);
stage.setScene(scene);
stage.sizeToScene();
return (Initializable) loader.getController();
}
这样可以很好地加载一切。但我也有能力回到之前的AnchorPane。目前这使用相同的方法,但这并不理想,因为它加载了一个全新的AnchorPane,并且用户之前输入的所有信息都消失了。我想保留anchorpanes并重新加载它们并尝试使用类似于以下代码重新加载它们
private void replaceSceneContent(AnchorPane page) throws Exception {
Scene scene = new Scene(page, APP_WIDTH, APP_HEIGHT);
stage.setScene(scene);
stage.sizeToScene();
}
然而,这导致我的应用程序显示完全白屏,可能是因为我没有再次加载FXML?我需要一些关于如何保留用户输入的数据的想法,如果他们想要返回的话。关于如何做得好的任何想法?