Приложение Java FXML: неудачный вызов метода в классе контроллера из внешнего класса - PullRequest
0 голосов
/ 14 ноября 2018

Работа над приложением Java FXML под названием EVIF VideoRouter. Тогда основным классом является VideoRouter.java, а класс контроллера называется VideoRouterFXMLController.java.

У меня есть метод в классе VideoRouterFXMLController.java, который мне нужно вызывать из других внешних классов в приложении. Основываясь на тщательном поиске и чтении, я изменил код загрузчика FXML в основном классе VideoRouter.java таким образом:

    FXMLLoader EVIFloader = new FXMLLoader(this.getClass().getResource("VideoRouterFXML.fxml"));
    Parent EVIFroot = (Parent) EVIFloader.load();
    VideoRouterFXMLController EVIFcontroller = EVIFloader.getController();

Теперь, как я понимаю этот процесс, я каким-то образом должен создать геттер в основном классе VideoRouter.java, который возвращает экземпляр EVIFcontroller, который я создал выше? И тогда я могу использовать этот метод получения в других классах и вызвать метод внутри возвращенного экземпляра?

Если это так, мне трудно понять, где именно разместить геттер. Это идет в классе контроллера, или в основном классе? В любом случае кажется, что он не может увидеть экземпляр контроллера для его возврата.

Опять же, я много раз искал, и я обнаружил, что похожие посты не решают эту конкретную проблему, с которой я столкнулся. Любая помощь?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 14 ноября 2018

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

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

...