У меня есть 2 файла FXML с 2 отдельными контроллерами FXML. Они в одной упаковке.

Я хочу изменить свойство включения стековой панели в первом окне (first_controller.java), если я нажму кнопку во втором окне. Какое решение самое простое?

(Я попытался объединить документы контроллера, и я сказал обоим двум fxml использовать один и тот же контроллер, чтобы сделать это простым способом, но не сработало. Может быть, controller.java может использовать только 1 источник FXML?)

0
Mr.Fireman 4 Мар 2015 в 21:59

2 ответа

Лучший ответ

Прошу вас, пожалуйста, не используйте статический способ только из-за простоты! Есть нормальное решение вашей проблемы.

FXMLLoader loader = new FXMLLoader(this.getClass().getResource("Example.fxml"));
Parent root = (Parent) loader.load();
YourController controller1 = loader.getController();
controllerOfSecondFXML.methodToPassYourController(controller1);

Таким образом, если вы разделите загрузку FXML, вы можете легко получить контроллеры ваших FXML и использовать их методы. Просто возьмите контроллер, как я написал выше, и передайте его другому. Это объектно-ориентированный способ.

2
Juce 5 Мар 2015 в 09:24

Наконец я нашел решение.

В первом FXMLController StackPane должен использоваться как «общедоступный статический Stackpane». В этом случае другой контроллер FXML может использовать это и изменить значение реального экземпляра.

0
Mr.Fireman 4 Мар 2015 в 21:06