Между кнопками есть необъяснимое пространство - PullRequest
0 голосов
/ 23 марта 2019

У меня проблема с упражнением.Существует необъяснимое пространство между первой и второй кнопками на сцене.Я изменил расположение кнопок, но первая из них имеет пробел от второй.Какова причина этого и как я могу сделать это пространство короче?https://imgur.com/hYolYE2

    public void start(Stage myStage) {

        GridPane myPane = new GridPane();
        myPane.setPadding(new Insets(10, 10, 10, 10));
        myPane.setHgap(10);
        myPane.setVgap(10);

        Button btn1 = new Button("Computer Scinence");
        Button btn2 = new Button("Chemistry");
        Button btn3 = new Button("Arts");

        DrawText txt1 = new DrawText("Computer Scince","Times Roman",FontWeight.BOLD,FontPosture.ITALIC,20,Color.GREEN);
        DrawText txt2 = new DrawText("Chemistry","Times Roman",FontWeight.BOLD,FontPosture.ITALIC,20,Color.BLUE);
        DrawText txt3 = new DrawText("Arts","Times Roman",FontWeight.BOLD,FontPosture.ITALIC,20,Color.YELLOW);

        GridPane.setConstraints(btn1,0,1);
        GridPane.setConstraints(btn2,1,1);
        GridPane.setConstraints(btn3,2,1);
        GridPane.setConstraints(txt1,0,2);
        GridPane.setConstraints(txt2,0,3);
        GridPane.setConstraints(txt3,0,4);

        myPane.getChildren().addAll(btn1,btn2,btn3,txt1,txt2,txt3);

        Scene myScene = new Scene(myPane,350,190);        
        myStage.setScene(myScene);        
        myStage.setTitle("Exercise 3_3");        
        myStage.show();
    }

1 Ответ

6 голосов
/ 23 марта 2019

Часто вы можете отладить GridPane проблемы с макетом, включив линии сетки:

myPane.setGridLinesVisible(true);

После воссоздания приложения (вы не включили класс DrawText, поэтому я просто стилизую меткивместо этого) и включение линий сетки выявляет проблему:

screenshot 1

Вы можете видеть, что Информатика Label вGridPane location 0, 1 имеет большую ширину, чем Computer Science Button.Это заставляет GridPane увеличить ширину первого столбца для размещения Label.

У вас есть несколько вариантов решения этой проблемы, в зависимости от того, как вы хотите, чтобы макет работал.

1) Задать диапазон столбцов :

Если вы хотите сохранить Computer Science Button того же размера, но ширина первого столбца не должна увеличиваться до размера Label, просто добавьте Label span 2 столбца:

GridPane.setColumnSpan(txt1, 2);

screenshot 2

2) Увеличить ширину кнопки :

Если вы хотите Компьютерные науки Button, чтобы развернуть и заполнить оставшуюся часть столбца, вы можете установить для его свойства MaxWidth максимальное значение:

btn1.setMaxWidth(Double.MAX_VALUE);

screenshot 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...