ArrayList Cast在java组合框中

时间:2015-02-13 12:53:15

标签: java

您好我有这个代码

public void comboCountry(List<Countries> cs) {
    country = db.fillComboCountries();
    DefaultComboBoxModel dcbm = (DefaultComboBoxModel) CountryComboBox.getModel();
    for (int i = 0; i < country.size(); i++) {
        String row[] = new String[country.size()];

        //row[i] = String.valueOf(country.get(i).getCountryId());
        row[i] = country.get(i).getCountryName();
       // row[i] = country.get(i).getCountryCode();
        dcbm.addElement(row);
    }             
}

使用country = db.fillComboCountries(); i查询数据库并将所有内容加载到ArrayList中。 Arraylist是国家。 当我将数据加载到组合框中时,我得到了 [Ljava.lang.String;@fdfc58

我怎样才能避免这种情况并获得我想要的价值? 我试过Arrays.tostring(),但我也得到[]。

2 个答案:

答案 0 :(得分:1)

而不是dcbm.addElement(row);使用dcbm.addElement(country.get(i).getCountryName());

有了这个,你将添加一个数组的单个元素而不是数组本身。此外,您还可以避免使用国家/地区列表中的每个项目创建数组。

答案 1 :(得分:0)

您在每次迭代中创建一个新的String数组,您应该在for循环之前初始化该数组:

String row[] = new String[country.size()];
for (int i = 0; i < country.size(); i++) {
    ...
}

如果您只想在每次迭代中添加countryName,则根本不需要该数组:

for (int i = 0; i < country.size(); i++) {
    String countryName = country.get(i).getCountryName();
    dcbm.addElement(countryName);
}

或者:

for (Country c : country) {
    dcbm.addElement(c.getCountryName());
}