Я ищу EventListener или метод, который будет запускаться при загрузке файла FXML.JavaFX 2.2 onLoad эквивалент метода
Имеет ли JavaFX нечто похожее на Javascript onLoad?
Я просто хочу запустить метод, который очистит любые данные с TextFields.
Я ищу EventListener или метод, который будет запускаться при загрузке файла FXML.JavaFX 2.2 onLoad эквивалент метода
Имеет ли JavaFX нечто похожее на Javascript onLoad?
Я просто хочу запустить метод, который очистит любые данные с TextFields.
Вызов кода, когда FXML загружается
В вашем классе контроллера, определить метод:
public void initialize(URL location, Resources resources)
Этот метод будет вызываться автоматически FXMLLoader когда файл FXML загружен.
Существует образец в Introduction to FXML (я только что воспроизвел, слегка измененный, здесь).
FXML
<VBox fx:controller="com.foo.MyController"
xmlns:fx="http://javafx.com/fxml">
<children>
<Button fx:id="button" text="Click Me!"/>
</children>
</VBox>
Java
package com.foo;
public class MyController {
@FXML private Button button;
@FXML
protected void initialize()
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("You clicked me!");
}
});
}
}
Наблюдение на основе вашего вопроса
Вы можете иметь небольшое непонимание того, как обработка FXML работает, потому что, когда вы загрузить файл FXML , обычно создается новый набор узлов (исключения могут быть, когда вы устанавливаете контроллер в FXMLLoader или используете FXMLLoader в сочетании с системой впрыскивания зависимостей, но ни один из них, вероятно, не относится к вашему случаю). Это означает, что нет необходимости «запускать метод, который очищает любые данные из TextFields», потому что текстовые поля являются новыми узлами и не будут иметь никаких данных в них, если вы не установите текст в FXML (который вам не нужно будет делать, если вы просто очистите его).
Спасибо! Последний вопрос, другая ситуация - это то, где я хочу передать переменную id во второй контроллер fxml и хочу заполнить текстовые поля данными, полученными из базы данных MYSQL. Прямо сейчас у меня есть кнопка, которую я нажимаю, чтобы получить данные и заполнить поля. Где бы я поместил метод/функцию для запуска так, чтобы он выполнялся при создании страницы fxml? – user2690440
См. [Параметры передачи в FXML] (http://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml). – jewelsea