На момент написания данного вопроса я нахожусь в самом начале понимания концепции инъекции зависимости, и всё, что умею делать с ApplicationContext
из Spring - это объявлять бины в xml-файле, а также создавать интерфейсы, их реализации, а также получать их, например:
public static void main (String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("ApplicationContext.xml");
IFilesManager FilesManager = (dev.example.FilesManager.FilesManager) applicationContext.getBean("FilesManager");
FilesManager.initializeUserFiles();
}
Этих знаний недостаточно, чтобы справиться с такой задачей: нужно передать primaryStage
(экземпляр javafx.stage.Stage
) в контроллер. Стандартно, это делается через жесткое связывание главного класса приложения и контроллера.
В главном классе приложения:
// Даём контроллеру доступ к главному приложению.
PersonOverviewController controller = loader.getController();
controller.setMainApp(this);
В контроллере:
/**
* Вызывается главным приложением, которое даёт на себя ссылку.
* @param mainApp
*/
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
}
Стандартно, primaryState
можно получить от MainApp
через геттер последнего:
public Stage getPrimaryStage() {
return primaryStage;
}
Вопрос такой: можно ли сделать это через ApplicationContent
? Стандартно, primaryStage
является полем главного класса приложения, которое инициализируется в методе start
, который должен быть реализован в наследнике javafx.application.Application
.
@Override
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("JavaFX test");
}
Если нужен доступ к stage внутри контроллера, то эта задача решается проще. Любой графический контрол, являющийся полем класса и аннотированный @FXML
, знает в какой stage он находится.
((Stage)myPane.getScene().getWindow())
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Сейчас активно изучаю (или даже разбираю) известное пособие Хорстмена и Корнелла по Java2В данный момент остановился на параметризации
Во время написания программы у меня возник вопрос, ответ на который я не смог найтиЯ замеряю время выполнения одной функции в наносекундах...