2014-02-20 2 views
3

Я ищу EventListener или метод, который будет запускаться при загрузке файла FXML.JavaFX 2.2 onLoad эквивалент метода

Имеет ли JavaFX нечто похожее на Javascript onLoad?

Я просто хочу запустить метод, который очистит любые данные с TextFields.

ответ

8

Вызов кода, когда 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 (который вам не нужно будет делать, если вы просто очистите его).

+0

Спасибо! Последний вопрос, другая ситуация - это то, где я хочу передать переменную id во второй контроллер fxml и хочу заполнить текстовые поля данными, полученными из базы данных MYSQL. Прямо сейчас у меня есть кнопка, которую я нажимаю, чтобы получить данные и заполнить поля. Где бы я поместил метод/функцию для запуска так, чтобы он выполнялся при создании страницы fxml? – user2690440

+0

См. [Параметры передачи в FXML] (http://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml). – jewelsea

Смежные вопросы