JavaFX устанавливает поля для элементов в GridPane

Я пытаюсь получить лучший макет, и для этого я хотел бы setMargin для своих элементов внутри GridPane. Вот что я пробовал (только для первого idLabel, idTextField, nameLabel, nameTextField для тестирования):

private Pane createCenterPane() {   
    centerGridPane = new GridPane();
    
    centerGridPane.add(createIdLabel(), 0, 0);
    centerGridPane.add(createIdTextField(), 2, 0);
    BorderPane.setMargin(idLabel, new Insets(10, 10, 10, 10));
    BorderPane.setMargin(idTextField, new Insets(10, 10, 10, 10));
    
    centerGridPane.add(createNameLabel(), 0, 1);
    centerGridPane.add(createNameTextField(), 2, 1);
    BorderPane.setMargin(nameLabel, new Insets(10, 10, 10, 10));
    BorderPane.setMargin(nameTextField, new Insets(10, 10, 10, 10));
    
    centerGridPane.add(createDescriptionLabel(), 0, 2);
    centerGridPane.add(createDescriptionTextArea(), 2, 2);
    
    centerGridPane.add(createSeverityLabel(), 0, 3);
    centerGridPane.add(createSeverityComboBox(), 2, 3);
    
    centerGridPane.add(createTypeLabel(), 0, 4);
    centerGridPane.add(createTypeComboBox(), 2, 4);
    
    centerGridPane.add(createDependencyLabel(), 0, 5);
    centerGridPane.add(createDependencyListView(), 2, 5);
    
    return centerGridPane;
}

createIdLabel (другие createsX работают аналогично):

private Label createIdLabel() {
    return idLabel = new Label("Id:");
}

Но setMargin ничего не делает:

введите здесь описание изображения

Я хотел бы иметь некоторое расстояние между строками, а также между label и элементом рядом с ним.

Я совсем новичок в этом, поэтому, если что-то неясно, просто дайте мне знать! рад за любую помощь!


person Chris    schedule 11.07.2020    source источник
comment
Вероятно, ищете GridPane#setHgap() и GridPane#setVgap()?   -  person n247s    schedule 11.07.2020
comment
@n247s никогда раньше этим не пользовался. Не могли бы вы уточнить это? :)   -  person Chris    schedule 11.07.2020
comment
Это просто добавит интервал между каждой строкой (vgap) и каждым столбцом (hgap). Разве это не вопрос? Просто попробуйте установить оба значения на 5.0 и посмотрите, что произойдет.   -  person n247s    schedule 11.07.2020
comment
да вот вопрос. Я дам ему попробовать   -  person Chris    schedule 11.07.2020
comment
@ n247s вот и все, спасибо за помощь!   -  person Chris    schedule 11.07.2020
comment
Не могли бы вы рассказать об этом подробнее? вы могли бы прочитать документ API, верно?   -  person kleopatra    schedule 12.07.2020


Ответы (1)


Использовать:

  • Для полей используйте GridPane.setMargin(node, insets) вместо BorderPane.setMargin(node, insets)
  • Для горизонтального пространства между столбцами используйте centerGridPane.setHgap(value)
  • Для вертикального интервала между строками используйте centerGridPane.setVgap(value)
person Oboe    schedule 11.07.2020