JavaFX 1 файл FXML с несколькими различными контроллерами?

в моем приложении есть два разных этапа, которые являются экранами справки, которые используют один и тот же файл FXML. Вместо того, чтобы создавать 2 файла FXML, я хотел бы использовать только один и иметь два контроллера, которые вызывают один и тот же fxml.

единственная проблема заключается в том, что контроллер назначен в файле FXML. Итак, есть ли способ изменить назначенный контроллер с кодом в самом классе контроллера?

Я бы очень хотел избежать дублирования файла FXML, чтобы изменить Контроллер в каждом. Спасибо заранее.


1 ответов


вы можете удалить fx:controller="" задание FXML файл и назначить контроллер через FXMLLoader во время загрузки.

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Your.fxml"));
fxmlLoader.setController(this);

try
{
    fxmlLoader.load();
}
catch (IOException exception)
{
    throw new RuntimeException(exception);
}

Проверьте введение в раздел FXML о пользовательских компонентах.