Явафкс 2:Как удалить строку или столбец в Gridpane

StackOverflow https://stackoverflow.com//questions/23002532

  •  20-12-2019
  •  | 
  •  

Вопрос

Если я хочу программно добавить строку текстовых полей в JavaFx, я могу просто использовать метод добавления Gridpane.

Это добавит набор текстовых полей в строку 1.

for (int i = 0; i < Fields.size(); i++) {
   gridpane.add(new TextField(), i, 1);
}

Аналогично, как удалить строку?Я не нашел подходящего метода для удобного удаления строки/столбца в JavaFX.

Это было полезно?

Решение

Нет непосредственно эквивалентного метода.Удалить узлы, просто используйте gridpane.getChildren().remove(...); или gridpane.getChildren().removeAll(...); и пропуск в узлах, которые вы хотите удалить с панели.

Другие советы

В Java 8+ вы можете использовать removeIf:

gridPane.getChildren().removeIf(node -> GridPane.getRowIndex(node) == rowNumber);

Предостережение
Если удалить элементы из 0-я строка, также проверьте GridPane.getRowIndex(node) == null, то есть,

node -> GridPane.getRowIndex(node) == null || GridPane.getRowIndex(node) == 0

(Я думаю, что это JavaFX, оставляющий номер строки как null когда в соответствующем элементе в FXML не указан номер строки, хотя отсутствие номера строки в FXML означает, что элемент находится в 0-й строке, поскольку строкой по умолчанию является 0-я строка.)

Это работает довольно хорошо:

while(MainGridPane.getRowConstraints().size() > 0){
    MainGridPane.getRowConstraints().remove(0);
}

while(MainGridPane.getColumnConstraints().size() > 0){
    MainGridPane.getColumnConstraints().remove(0);
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top