2016-10-26 3 views
0

Я использовал несколько команд для получения контроллера файла fxml. Сначала я использовал адрес, как это:что должно быть указано в файле fx: controller = ""

fx:controller="PersonOverviewController" 

и код в главном классе был, как этот

FXMLLoader loader = new FXMLLoader(); 
loader.setLocation(MainApp.class.getResource("view/PersonOverview.fxml")); 
AnchorPane ap = loader.load(); 

PersonOverviewController pc = loader.getController(); 
pc.setTableContent(this); 

, но он не работает. в очередной попытке, я изменил

fx:controller="address.view.PersonOverviewController" 

и на этот раз он работал. Почему это так?

ответ

3

FXMLLoader Требуется указать класс контроллера binary name. Если пакет вашего PersonOverviewController равен address.view, вы должны включить его в значение атрибута.

FXMLLoader в основном создает экземпляр контроллера, как это, если ни один контроллер завода не установлен:

String fxController = ... 
Class controllerClass = getClassLoader().loadClass(fxController); 
Object controller = controllerClass.newInstance(); 
Смежные вопросы