Получение файла fxml, используемого с контроллером, от контроллера - PullRequest
0 голосов
/ 13 ноября 2018

Как узнать, какой файл fxml называется классом контроллера, в то время как несколько файлов fxml имеют один и тот же класс контроллера?

У меня есть класс инициализации, в котором я хотел бы автоматически заполнить два текстовых поля из данных вбаза данных.Поскольку класс контроллера такой же, он выдает ошибку, когда я запускаю программу.Поэтому получение сведений о том, какая fxml-страница называется классом контроллера, поможет.

Ответы [ 2 ]

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

Предполагая, что вы указываете файл fxml для загрузки, передавая URL, а не InputStream, вам просто нужно добавить поле URL location, в которое FXMLLoader может ввести значение. FXMLLoader автоматически вставляет URL-адрес fxml в это поле:

@FXML
private URL location;

@FXML
private void initialize() {
    System.out.println(location);
}

Использование одного и того же контроллера для нескольких fxmls с разной функциональностью кажется плохой практикой. Пожалуйста, проверьте еще раз, если использование разных контроллеров не будет более чистым решением.


Примечание: Каждый раз, когда вы загружаете fxml, содержащий атрибут fx:controller с именем класса контроллера в качестве значения, новый экземпляр контроллера создано.

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

Вы не должны использовать один и тот же класс контроллера для разных файлов FXML, потому что тогда вам не нужно будет сначала решать подобные проблемы.Однако, если вы настаиваете, что вы можете вручную вызвать FXMLLoader.setController перед загрузкой FXML (вам также необходимо удалить ссылку на контроллер внутри FXML), таким образом вы узнаете, какой экземпляр контроллера назначен какому FXML

...