【问题标题】:How do I display all country list in ComboBox? [JavaFX]如何在 ComboBox 中显示所有国家/地区列表? [JavaFX]
【发布时间】:2017-04-28 07:25:18
【问题描述】:
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 类显示国家/地区列表。但是,当我运行代码时,我只能在 Combobox 中显示一个国家/地区。我不确定我是否弄错了循环或什么。

【问题讨论】:

  • 让我格式化你的代码。

标签: java javafx combobox iso


【解决方案1】:

使用此代码

  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);
 }

【讨论】:

  • 如果您回答问题,那么至少使用正确的命名约定。 aaa 类是什么意思?? OP 发布了足够的代码来解决他的问题,那你为什么要创建与提供的代码无关的示例?
【解决方案2】:

您要在每个循环中创建一个新的组合框,尝试在循环之外创建它并只在里面填充?

希望对您有所帮助。

您好,

吉安-马可

【讨论】:

    【解决方案3】:

    您在每次迭代中都创建了新的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);
    

    【讨论】:

      【解决方案4】:

      这里是列表

          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));
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 2017-05-31
        • 2014-12-19
        • 2021-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多