Использование ссылки
Как утверждает Слав в комментарии:
Сохранить ссылку на TextField в поле экземпляра класса.
Если вы используете FXML
Если вы используете FXML, который является общим для приложений JavaFX, и размещаете атрибут fx:id
на узле, тогда используйте @FXML
чтобы вставить узел в ваш контроллер, ссылка будет автоматически сохранена в контроллере. В некоторых случаях этот вид переносит проблему с вопроса «как получить ссылку на узел?»на «Как получить ссылку на контроллер?». Если вам нужно ответить на последний вопрос, посмотрите на некоторые предложения: Передача параметров JavaFX FXML .
Использование поиска
Если по какой-то причине вы действительно не можете сохранить ссылку как поле экземпляра в классе, тогда установите идентификатор узла на узле, и вы сможете просмотреть его позже без необходимости написания ужасного кода для обхода. граф сцены, чтобы найти его.
Например, замените:
this.getChildren().add(new HBox(new TextField("Some_Text ")));
на:
TextField textField = new TextField("Some_Text ");
textField.setId("myId");
this.getChildren().add(new HBox(textField));
Затем, когда узел окажется в графе сцены,Вы можете найти узел , ища его в сцене или родительский узел по:
TextField myField = (TextField) scene.lookup("#myId");
if (myField != null) {
// do something with myField
}
Обратите внимание на приведение в поиске. По своей природе поиск во время выполнения на основе идентификаторов CSS теряет проверку типов во время компиляции, полученную из сохраненной ссылки. По этой и другим причинам использование хранимых ссылок обычно является предпочтительным способом ссылки на вещи в JavaFX.