Как разместить сцену окна в javafx? - PullRequest
1 голос
/ 15 марта 2019

привет, я сделал простую игру, и когда она закончится, она отобразит новый этап с некоторой информацией:

 public static void d(String m){
    Stage stage = new Stage();
    stage.setTitle("GAME FINISHED");
    Label label = new Label(m);
    label.setTextFill(Color.PURPLE);
    label.setFont(new Font("Cambria",14));

    Button button = new Button("Close");
    VBox vb = new VBox();
    button.setOnAction(e-> p.close());
    vb.getChildren().addAll(label,button);
    vb.setSpacing(50);
    vb.setPadding(new Insets(5,0,0,12));
    Scene scene = new Scene(v,200,300);
    stage.setScene(scene);
    stage.setResizable(false);
    stage.showAndWait();


}

Я не хочу, чтобы это окно отображалось посередине (потому что оно скрывает некоторыесодержание игры) возможно ли это?

1 Ответ

2 голосов
/ 15 марта 2019

Вы можете использовать методы stage.setX () и stage.setY () , чтобы вручную установить положение окна:

// create and init stage
stage.setX(200);
stage.setY(200);
stage.showAndWait();

Если вы хотитечтобы вычислить позицию на основе размера экрана, вы можете использовать следующий размер, чтобы получить размер:

Rectangle2D bounds = Screen.getPrimary().getVisualBounds();

Если вы хотите использовать stage.getWidth() или stage.getHeight() для расчета позиции, вы должны показать сценудо:

stage.show();
Rectangle2D bounds = Screen.getPrimary().getVisualBounds();
double x = bounds.getMinX() + (bounds.getWidth() - scene.getWidth()) * 0.3;
double y = bounds.getMinY() + (bounds.getHeight() - scene.getHeight()) * 0.7;
stage.setX(x);
stage.setY(y);

В этом случае вы должны использовать stage.show() вместо stage.showAndWait().

...