Как перебрать все текстовые поля в javafx? - PullRequest
0 голосов
/ 28 октября 2018

У меня есть программа, которая имеет 40 текстовых полей.Я хочу знать, как зациклить на каждом и setText.У каждого текстового поля уже есть разные fxid.Помогите, пожалуйста!Я хочу закодировать это кратко.

1 Ответ

0 голосов
/ 28 октября 2018

Вам понадобится List для отслеживания каждого TextField.Ваш вопрос не содержит никакого кода, поэтому сложно определить самый простой способ сделать это в вашей ситуации, но есть несколько вариантов.

  1. Тот же контейнер макета: Есливсе элементы управления TextField содержатся в одном контейнере макета, например, VBox или FlowPane, вы можете использовать список дочерних элементов для этого контейнера: vbox.getChildren()
  2. Создайте свойown List: Если у вас есть fx:id для всех ваших TextFields, то добавьте их в List: list.add (textField)

Теперь, когда у вас естьсписок, просто переберите их, используя итератор или простой цикл for:

Дочерний контейнер:

for (Node node : root.getChildren()) {
    // If you're certain all the children ARE TextFields, cast the node now
    ((TextField) node).setText("Yay for text!");
}

Ваш собственный список:

    // Create a List to track all the TextFields
    List<TextField> textFieldList = new ArrayList<>();

    // Add some TextFields to the list
    for (int i = 0; i < 20; i++) {
        textFieldList.add(new TextField());
    }

    // Now iterate over the list of TextFields and set their text
    for (TextField textField :
            textFieldList) {
        textField.setText("Yay for text again!");
    }
...