Сцена JavaFX не изменяется, чтобы заполнить сцену, если для сцены установлено minWidth / minHeight - PullRequest
3 голосов
/ 19 июня 2020

Мне нужно установить минимальную ширину и минимальную высоту для данного окна.

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

Это происходит только тогда, когда minWidth = width И minHeight = height. Во всех остальных случаях размер изменяется, как и ожидалось (например, minWidth = width -1).

Кроме того, это происходит только в Linux, в частности в Red Hat 6, и только в Java 8. Я не могу найти ни одного существующего отчета об ошибке для этого поведения.

I Я ищу решение этой проблемы. Это устаревший проект, и, к сожалению, обновление Java невозможно.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class SceneDoesntFillStage extends Application {

    public static void main(String\[\] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setMinWidth(300);
        primaryStage.setWidth(300);

        primaryStage.setMinHeight(200);
        primaryStage.setHeight(200);

        HBox root = new HBox() {
            protected void layoutChildren() {
                super.layoutChildren();
                System.out.println("Layout");
            }
        };
        root.setStyle("-fx-background-color:red");
        root.setPrefWidth(250);
        root.setPrefHeight(150);
        primaryStage.setScene(new Scene(root));
        primaryStage.show();

        System.out.println(primaryStage.getScene().getWidth() + " x " + primaryStage.getScene().getHeight());
    }

}

1

...