Я делаю приложение, используя только 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 для запроса о гражданстве?Я заметил, что у него было намного больше вариантов, чем у форм, когда он запрашивает национальность / страну, и он также был не полностью в алфавитном порядке.Спасибо всем заранее.