我正在JavaFx中创建一个应用程序,如果要打开任何子阶段,则应在其中进行操作,然后应在父阶段的中心打开它。
我正在尝试使用mystage.centerOnScreen()
进行此操作,但是它将子级分配到屏幕的中心,而不是父级的中心。
如何将子阶段分配给父阶段的中心?
private void show(Stage parentStage) {
mystage.initOwner(parentStage);
mystage.initModality(Modality.WINDOW_MODAL);
mystage.centerOnScreen();
mystage.initStyle(StageStyle.UTILITY);
mystage.show();
}
最佳答案
您可以使用父级的X/Y/width/height属性来执行此操作。除了使用Stage#centerOnScreen
之外,您还可以执行以下操作:
public class CenterStage extends Application {
@Override
public void start(final Stage stage) throws Exception {
stage.setX(300);
stage.setWidth(800);
stage.setHeight(400);
stage.show();
final Stage childStage = new Stage();
childStage.setWidth(200);
childStage.setHeight(200);
childStage.setX(stage.getX() + stage.getWidth() / 2 - childStage.getWidth() / 2);
childStage.setY(stage.getY() + stage.getHeight() / 2 - childStage.getHeight() / 2);
childStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}