Java Fx, как ссылаться на добавленные элементы в классе - PullRequest
0 голосов
/ 24 октября 2019

Я добавил

this.getChildren().add(new HBox(new TextField("Some_Text ")));

в конструктор класса, класс расширяет Java Fx Group. Интересно, что делать, чтобы позже изменить текст в этом TextField.

Например, обычно мы можем сделать это

TextField asdf = new TextField();
asdf.setText("Some_text");

, но как я могу изменить текст позже в предыдущем примере?

1 Ответ

4 голосов
/ 24 октября 2019

Использование ссылки

Как утверждает Слав в комментарии:

Сохранить ссылку на 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...