Имеет ли JavaFX функцию, похожую на onInit? [Дубликат]

попробуйте эту более короткую
  • no array
  • no extra для цикла

for (var i = 0; i < 3; i++) {
    createfunc(i)();
}

function createfunc(i) {
    return function(){console.log("My value: " + i);};
}

] http://jsfiddle.net/7P6EN/

53
задан Santosh Gokak 12 May 2016 в 18:30
поделиться

2 ответа

Метод initialize вызывается после того, как все @FXML аннотированные члены были введены. Предположим, что у вас есть табличное представление, которое вы хотите заполнить данными:

class MyController { 
    @FXML
    TableView<MyModel> tableView; 

    public MyController() {
        tableView.getItems().addAll(getDataFromSource()); // results in NullPointerException, as tableView is null at this point. 
    }

    @FXML
    public void initialize() {
        tableView.getItems().addAll(getDataFromSource()); // Perfectly Ok here, as FXMLLoader already populated all @FXML annotated members. 
    }
}
60
ответ дан Itai 23 August 2018 в 17:21
поделиться

В нескольких словах: сначала вызывается конструктор, затем заполняются любые @FXML аннотированные поля, затем вызывается initialize(). Поэтому конструктор НЕ имеет доступа к полям @FXML, относящимся к компонентам, определенным в файле .fxml, тогда как initialize() имеет к ним доступ.

Цитирование из Введение в FXML :

[...] контроллер может определить метод initialize (), который будет вызываться один раз на контроллере реализации, когда содержимое его связанного документа будет полностью загружено [. ..] Это позволяет классу-исполнителю выполнять любую необходимую пост-обработку содержимого.

71
ответ дан Nikos Paraskevopoulos 23 August 2018 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: