/** 工厂 */
public class Factory {
public Stage createStage(String title, int width,int height, String file) throws IOException {
URL url = Factory.class.getClassLoader().getResource(file);
Parent root = FXMLLoader.load(url);
Stage stage = new Stage();
stage.setTitle(title);
stage.setScene(new Scene(root, width, height));
stage.setResizable(false);
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
System.exit(0);
}
});
Context.stageManager.addStage(file.split("\\.")[0], stage);
return stage;
}
}
/** Stage管理类 */
public class StageManager {
private Map<String, Stage> stageMap = new HashMap<>();
public void addStage(String name, Stage stage){
stageMap.put(name, stage);
}
public Stage getStage(String name){
return stageMap.get(name);
}
public void closeStage(String name){
stageMap.get(name).close();
}
public void jump(String currentStageName, String targetStageName){
stageMap.get(currentStageName).close();
stageMap.get(targetStageName).show();
}
public void release(String name){
stageMap.remove(name);
}
}
public class Context {
public static StageManager stageManager = new StageManager();
public static Factory factory = new Factory();
}
Stage test1 = Context.factory.createStage("我是标题", 800, 600, "test1.fxml");
test1.show();
Context.factory.createStage("我是标题", 800, 600, "test2.fxml");
Context.stageManager.jump("test1", "test2");