如何在 ComboBox 中显示所有国家/地区列表? [JavaFX]
How do I display all country list in ComboBox? [JavaFX]
public void start(final Stage frame) throws Exception {
String[] locales = Locale.getISOCountries();
for (String countrylist : locales) {
Locale obj = new Locale("", countrylist);
String[] city = {obj.getDisplayCountry()};
for (int x = 0; x < city.length; x++) {
cities = FXCollections.observableArrayList(obj.getDisplayCountry());
country = new ComboBox<String>(cities);
}
}
}
我想使用 Locale class 显示国家/地区列表。但是,当我 运行 代码时,我只能在组合框中显示一个国家/地区。我不确定是我弄错了循环还是什么。
您要在每个循环中创建一个新的组合框,尝试在循环外创建它并只在循环内填充它?
希望对您有所帮助。
你好,
吉安-马可
使用此代码
public void start(Stage primaryStage) throws Exception {
ObservableList<String> cities = FXCollections.observableArrayList();
ComboBox<String> country = new ComboBox<String>(cities);
String[] locales1 = Locale.getISOCountries();
for (String countrylist : locales1) {
Locale obj = new Locale("", countrylist);
String[] city = { obj.getDisplayCountry() };
for (int x = 0; x < city.length; x++) {
cities.add(obj.getDisplayCountry());
}
}
country.setItems(cities);
}
您在每次迭代中都在创建新的 ComboBox
,这就是为什么您总是获得单个国家/地区(列表中的最后一个国家/地区)的 ComboBox
。您可以使用 Stream
获取所有国家/地区。
ObservableList<String> countries = Stream.of(Locale.getISOCountries())
.map(locales -> new Locale("", locales))
.map(Locale::getDisplayCountry)
.collect(Collectors.toCollection(FXCollections::observableArrayList));
ComboBox<String> cb = new ComboBox<>(countries);
这里是列表
ComboBox<String> country = new ComboBox<>();
String[] locales = Locale.getISOCountries();
for (String countrylist : locales) {
Locale obj = new Locale("", countrylist);
String[] city = {obj.getDisplayCountry()};
country.setItems(FXCollections.observableArrayList(locales));
}
public void start(final Stage frame) throws Exception {
String[] locales = Locale.getISOCountries();
for (String countrylist : locales) {
Locale obj = new Locale("", countrylist);
String[] city = {obj.getDisplayCountry()};
for (int x = 0; x < city.length; x++) {
cities = FXCollections.observableArrayList(obj.getDisplayCountry());
country = new ComboBox<String>(cities);
}
}
}
我想使用 Locale class 显示国家/地区列表。但是,当我 运行 代码时,我只能在组合框中显示一个国家/地区。我不确定是我弄错了循环还是什么。
您要在每个循环中创建一个新的组合框,尝试在循环外创建它并只在循环内填充它?
希望对您有所帮助。
你好,
吉安-马可
使用此代码
public void start(Stage primaryStage) throws Exception {
ObservableList<String> cities = FXCollections.observableArrayList();
ComboBox<String> country = new ComboBox<String>(cities);
String[] locales1 = Locale.getISOCountries();
for (String countrylist : locales1) {
Locale obj = new Locale("", countrylist);
String[] city = { obj.getDisplayCountry() };
for (int x = 0; x < city.length; x++) {
cities.add(obj.getDisplayCountry());
}
}
country.setItems(cities);
}
您在每次迭代中都在创建新的 ComboBox
,这就是为什么您总是获得单个国家/地区(列表中的最后一个国家/地区)的 ComboBox
。您可以使用 Stream
获取所有国家/地区。
ObservableList<String> countries = Stream.of(Locale.getISOCountries())
.map(locales -> new Locale("", locales))
.map(Locale::getDisplayCountry)
.collect(Collectors.toCollection(FXCollections::observableArrayList));
ComboBox<String> cb = new ComboBox<>(countries);
这里是列表
ComboBox<String> country = new ComboBox<>();
String[] locales = Locale.getISOCountries();
for (String countrylist : locales) {
Locale obj = new Locale("", countrylist);
String[] city = {obj.getDisplayCountry()};
country.setItems(FXCollections.observableArrayList(locales));
}