Установка контроллера класса для панели привязки

При работе с JavaFX Scene Builder возникла следующая проблема ...

Дано:

Файл fxml, содержащий описание Anchor Pane (fxml, сформированный из Scene Builder);
Для Anchor Pane не указан класс контроллера.
Этот fxml загружается в приложение Java с помощью FXMLLoader.

Потребность:

После загрузки панели привязки установите значение «Класс контроллера».
Это необходимо для загрузки одного и того же файла fxml с разными обработчиками.

Вопрос: это возможно, и если да - как реализовать?


person Rams    schedule 16.01.2013    source источник


Ответы (1)


Класс контроллера загружаемого файла FXML также можно установить с помощью Scene Builder. Но вы хотите установить его во время загрузки в приложении. Для этого вы должны установить контроллер FXMLLoader до вызова метода load ():

AnchorPane rootPane;
MyController controller = new MyController();
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("my.fxml"));
fxmlLoader.setRoot(rootPane);
fxmlLoader.setController(controller);
fxmlLoader.load();
person Uluk Biy    schedule 16.01.2013
comment
Улук Бий, привет, я попробовал твой ответ и работал у меня. У меня вопрос, как установить класс контроллера с помощью конструктора? Я не знаю, что поместить в поле класса контроллера, я пробовал использовать только имя класса контроллера, пакет / имя, имя приложения / пакет / имя ... Если вы знаете или можете привести мне пример ... спасибо ты - person HoNgOuRu; 05.09.2015
comment
@HoNgOuRu, к сожалению, я не использовал построитель сцен. - person Uluk Biy; 07.09.2015
comment
привет, спасибо за ответ. Проблема заключалась в том, что построитель сцены удалял оператор импорта пакета из fxml перед его сохранением. - person HoNgOuRu; 07.09.2015