【发布时间】:2021-05-29 18:55:57
【问题描述】:
我熟悉 JavaFX。我创建了一个 loginStage 和一个 mainStage。当按下 loginStage 上的“登录”按钮时,我想切换到 mainStage。 loginStage 比 mainStage 小很多。我希望 mainStage 的位置使得以前的 loginStage 位于 mainStage 的中间(如果我们没有关闭它的话)。
我设法从 loginStage 切换到 mainStage。但是由于某种原因,mainStage 没有正确定位自己;在我看来,它的 X 和 Y 坐标根本没有设置!
这是我的代码:
public void switchWindow() {
FXMLLoader loader = new FXMLLoader();
try {
Stage loginStage = (Stage) btnLogin.getScene().getWindow();
loginStage.setScene(null);
loginStage.hide();
Pane mainPane= (Pane) loader.load(getClass().getResource("/mainStage.fxml"));
Stage mainStage= new Stage();
mainStage.initStyle(StageStyle.TRANSPARENT);
Scene mainScene= new Scene(mainPane);
mainStage.setScene(mainScene);
mainStage.setX(loginStage.getX() + loginStage.getWidth()/2 - mainStage.getWidth()/2);
mainStage.setY(loginStage.getY() + loginStage.getHeight()/2 - mainStage.getHeight()/2);
mainStage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
另外:我会创造更多的舞台。因此,我认为在单独的包中创建 switchWindow() 函数可能是个好主意。我可能只是用参数oldStage and newPane 调用该函数。我想问你:在阶段之间切换的最佳做法是什么?这样我就不会一遍又一遍地重现相同的代码?
【问题讨论】:
标签: java user-interface javafx