2015-12-16 9 views
0

я есть (сокращен) Java FX Класс:@FXML объекты являются недействительными в методе инициализации

public class MyReportController extends 
    javafx.application.Application implements Initializable { 

@FXML 
private CustomTextField autoTextField; 
@Override 
public void initialize(URL url, ResourceBundle resourceBundle) { 


    TextFields.bindAutoCompletion(autoTextField, ServiceLocator 
      .getInstance().getMeasurementService() 
      .getAllMeasurementNumbers()); 
}...... 

метод initialzie называется, но autoTextField (и все другие компоненты FXML) равно нулю.

Приложение запускается из другого класса с использованием основного метода. Сначала у меня был основной метод в классе контроллера с результатом, что класс контроллера был создан дважды. Я думаю, что моя текущая проблема связана с этим.

ответ

1

Вы должны иметь те же самые объявления fx:id в своем FXML как имена свойств для ввода. Так, например, в FXML декларация CustomField controll должна иметь fx:id=autoTextField. Таким образом, зависимости будут зависеть от инициализации.

Во-вторых, пожалуйста, не используйте класс контроллера, который расширяет Application. Здесь просто нет цели. Запустите приложение из другого класса, этот контроллер, и экземпляр класса контроллера будет автоматически создан один раз FXMLLoader

+0

Ошибка написания - pebcac. thak вы! –

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