Панель не придерживается размера pref - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь использовать какой-то контейнер, такой как "div" в JavaFX, чтобы разделить экран на различные разделы. С кодом ниже, мне было интересно, почему холст занимает весь экран вместо 10х20 пикселей.

package sample;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.stage.Scene;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{
        primaryStage.setTitle("Window Title");
        TextField textField = new textField();
        stackPane root = new StackPane();
        Pane canvas = new Pane();
        canvas.setPrefSize(10, 20);
        canvas.setStyle("-fx-background-color: red;");
        root.getChildren().addAll(canvas, textField);
        primaryStage.setScene(new Scene(root, 800, 600));
        primaryStage.show();

    }

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

1 Ответ

4 голосов
/ 23 января 2020

Вы устанавливаете предпочтительный размер только для canvas. Это говорит родителю, что ему следует установить размер в соответствии с этими размерами, , если это возможно в соответствии с его собственными ограничениями макета.

В этом случае свойство StackPane пытается достичь Размер настолько близок, насколько его собственный размер имеет прецедент. Это может быть сделано, поскольку вы не указываете ограничение max / min. Вы можете указать ему использовать те же значения, что и для размера pref, используя Region.USE_PREF_SIZE:

canvas.setPrefSize(10, 20);
canvas.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
canvas.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...