Я новичок в изучении JavaFX и FXML. Большая часть моей логики приложения в классе FXMLController и базовый класс в значительной степени пустой, кроме основного кода, который был создан с помощью среды IDE NetBeans, например, как показано нижеДоступ к сцене из класса контроллера
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
У меня есть элемент с идентификатором input1
, который имеет типа TextField
, Как я могу получить доступ к этому (или любому другому другим) элементам управления по его идентификатору? (имея в виду, что я являюсь классом контроллера, а не основным классом).
Я нашел этот вопрос ниже, что именно то, что я ищу, но эта ситуация другая, потому что они находятся в основном классе, где определен scene
. Как я могу получить доступ к scene
из класса контроллера и использовать код в вопросе ниже.
How to find an element with an ID in JavaFX?
Вы можете вызвать lookup (...) или lookupAll (...) на любом графике сцены, который является предком узлов, которые вы ищете. Поэтому просто используйте инъекции (fx: id и @FXML аннотацию), чтобы получить ссылку на что-то, что содержит все ваши текстовые поля (например, корневой элемент), и вызвать поиск (...) на этом. Поиск немного хрупкий; они гарантируются только после того, как сцена была отображена (поэтому не будет работать в методе initialize (...). Возможно, вам лучше просто поместить текстовые поля в список или массив и выполнить итерацию через него. –
ArrayList вероятно, ваш лучший выбор.Я обновлю свой ответ, чтобы показать пример. – Givver
Спасибо за помощь. Я буду использовать List на данный момент, кажется достаточно хорошим для простого проекта, в котором я работаю. –