В JavaFX, как вы выравниваете метки с флажками в макете VBox? - PullRequest
1 голос
/ 18 мая 2019

Я создал TableView в JavaFX, который динамически загружает VBox s, содержащий список CheckBox s в строке.Это показано на рисунке ниже:

enter image description here

Как видно на рисунке, метки рядом с флажками не совпадают с флажкомсам по себе.

Я использую следующее для динамического создания VBox:

private VBox getVBox(Map<Integer, String> item, Set<Integer> completed, String id) {
    VBox box = new VBox();
    box.setSpacing(0);
    box.setPadding(new Insets(3,3,3,3));

    for(Integer i : item.keySet()) {
        CheckBox checkbox = new CheckBox(item.get(i));
        checkbox.setId("item"+id+"-" + i.intValue());
        if(completed.contains(i)) {
            checkbox.setSelected(true);
        }
        checkbox.setPrefHeight(21);
        box.getChildren().add(checkbox);
    }

    return box;
}

Даже если я удаляю настройки setSpacing и настройки setPadding и setPrefHeight, проблемаостается неизменным.

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

.table-view{
    -fx-background-color: transparent;
}

.table-view:focused{
    -fx-background-color: transparent;
}

.table-row-cell:odd{
    -fx-background-color: #E0E0E0;
    -fx-background-insets: 0, 0 0 1 0;
    -fx-padding: 0.0em;
}

.table-row-cell:even{
    -fx-background-color: #BBD9E0;
    -fx-background-insets: 0, 0 0 1 0;
    -fx-padding: 0.0em;
}

Мой вопрос: Как я могу сделатьметки флажков совпадают с флажками по вертикали?Разве это не может быть сделано с VBox?

Спасибо за помощь.

1 Ответ

0 голосов
/ 20 мая 2019

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

Загрузите его, добавьте как библиотеку и вставьте в код ниже строки:

  ScenicView.show(current scene instance);
...