Как я могу создать экземпляр объекта, который соответствует fxml и контроллеру

Допустим, у меня есть контроллер Ctr и соответствующий файл fxml file.fxml.
Я хочу объявить и создать экземпляр объекта, который я могу показать на экране, который соответствует этому fxml и контроллеру.
У меня есть класс A который содержит этот объект.
Проблема в следующем:
если объявить этот объект как Ctr (контроллер), он больше не будет отображаться, потому что я не могу добавить его как дочерний к другим, таким как stackpane.
И если использовать FXMLLoader возвращаемый класс нагрузки неизвестен, и я не могу сохранить его как объект Ctr.


person T0u4at1-05ema    schedule 18.02.2018    source источник
comment
при использовании FXMLLoader возвращаемый класс нагрузки неизвестен, и я не могу сохранить его как объект Ctr Всегда можно привести или использовать параметр типа метода load. Это может быть вариантом для вас: docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/   -  person fabian    schedule 18.02.2018


Ответы (1)


Вы не можете точно знать возвращаемый класс FXMLLoader, но поскольку вы выбираете файл fxml, вы знаете, в каком классе вы должны выполнить controller :

Stage primaryStage = new Stage();
FXMLLoader fx = new FXMLLoader(Paths.get("../specialView4X.fxml").toUri().toURL());
Scene scene = new Scene(fx.load());
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.centerOnScreen();    
SpecialView4XController control = (SpecialView4XController) fx.getController();

Это для запуска нового окна, для повторного использования существующего, возьмите существующий объект и используйте getScene() на нем

person azro    schedule 18.02.2018