Я делаю приложение, используя только Java и FXML для школьного проекта. Мне не разрешено использовать конструктор сцен. В приложении пользователь вводит свою информацию в форму. Затем эта информация используется для создания экземпляра одного из трех возможных классов. Одним из полей формы является «Национальность», поэтому я хотел бы использовать раскрывающийся список, содержащий страны, из которых они могут выбирать. Я создал ComboBox в своем классе Main.java (изначально он был в моем контроллере) с помощью ответа MBec на этот вопрос: ссылка.
Мой вопрос: как мне получить доступ к ComboBox, который я сделал в Main.java, из моего файла FXML и отобразить его на моей существующей сцене? В настоящее время у меня есть заполнитель ComboBox, но он не заполнен.
Заполненный ComboBox из Main.java:
ObservableList<String> all_countries = Stream.of(Locale.getISOCountries())
.map(locales -> new Locale("", locales))
.map(Locale::getDisplayCountry)
.collect(Collectors.toCollection(FXCollections::observableArrayList));
final ComboBox<String> country_list = new ComboBox<>(all_countries);
Я попытался установить свойство onAction для пустого ComboBox, созданного в FXML, с помощью метода, который создавал, а затем возвращал заполненный ComboBox из Main.java, но, как и ожидалось, это не сработало.
Мне удалось убедиться, что ComboBox работает, установив его в качестве корня новой сцены. Это было просто для того, чтобы убедиться, что сам ComboBox не был причиной проблемы. Новая сцена, используемая для тестирования:
Я также попытался сделать ComboBox по-другому (см. ответ Кейури Бхандери здесь: ссылка), однако это тоже не сработало.
Код для моей существующей сцены:
Parent root = FXMLLoader.load(getClass().getResource("view/sample.fxml"));
primaryStage.setTitle("form");
primaryStage.setScene(new Scene(root, 600, 600));
Я ожидал, что смогу получить доступ к ComboBox 'country_list' из sample.fxml и отобразить его на моей существующей сцене, следовательно, это моя цель. Я новичок в Java и FXML, поэтому ответ может быть очевиден, но я застрял на этом на день или два. Приносим извинения за плохое форматирование; это мой первый раз, когда я использую SO. Если у кого-то есть свободное время, у меня также есть дополнительный вопрос. Является ли getISOCountries() лучшим методом Locale для использования при запросе национальности? Я заметил, что у него было гораздо больше вариантов, чем в формах, когда запрашивается национальность / страна, и это также не было полностью в алфавитном порядке. Спасибо всем заранее.