Я хотел бы узнать, можно ли «повторно использовать» контроллер для другого fxml после его создания. Другими словами, могу ли я создать контроллер для fxml, немного изменить его, а затем использовать (другой экземпляр) для другого fxml, не затрагивая первый. В противном случае я вынужден скопировать код с контроллера, применить изменения, а затем использовать новый.Многоразовые контроллеры в FXML. Один контроллер (слегка измененный) для нескольких файлов fxml
0
A
ответ
0
Я не вижу много случаев для этого, так как вы, очевидно, будете иметь разные элементы управления в разных файлах FXML, так что не ясно, как вы справитесь с инъекцией. Если у вас есть прецедент (например, разные файлы FXML имеют разные макеты для одного и того же базового интерфейса), возможно:
Удалить атрибут fx:controller
из файлов FXML и установить контроллер вручную, используя следующий шаблон :
FXMLLoader loader = new FXMLLoader(getClass().getResource("/path/to/file.fxml"));
MyConfigurableController controller = new MyConfigurableController(aParam, anotherParam);
loader.setController(controller);
Parent root = loader.load();
Благодарим за ответ. У меня есть следующая ситуация. У меня два экрана, которые меняются динамически. На экране A у меня есть медиа-бар и контроллер для него. На экране B я хотел бы создать новую медиа-панель (например, с несколькими кнопками) и использовать один и тот же контроллер, но с добавленной функциональностью. Конечно, я могу скопировать контроллер в новый для второго медиа-бара и использовать его для своей цели, но я искал более элегантное решение, например, добавление второго контроллера к вновь созданной медиа-панели, которая может обрабатывать новые вещи , Это возможно? – TheNephalem
@ TheNephalem Для этого сценария, почему бы вам просто не использовать наследование? –
Я так устал, что больше не могу думать. Большое вам спасибо, что вы спасли меня много времени! – TheNephalem