java如何从ArrayList填充JComboBox
我正在尝试使用ArrayList
和DefaultComboBoxModel
从MySQL数据库获取一些值,以避免获取重复的值。因为当我调用方法获取值时,JComboBox会一次又一次地向JComboBox填充相同的值
当前,当下面的代码运行组合框显示如下值时
sometext@24084, sometext@716a1
这是我的密码
public static void loadAll(JComboBox comboBox) {
try {
ArrayList<Combo> comboList = ComboBoxController.getComboType();
DefaultComboBoxModel dtm = (DefaultComboBoxModel)comboBox.getModel();
for (Combo combo : comboList) {
Object[] rowData = {combo.getComboType()};
dtm.addElement(rowData);
}
} catch (SQLException | ClassNotFoundException ex)
{
Logger.getLogger(AllComboBoxMethod.class.getName()).log(Level.SEVERE, null, ex);
}
}
和获取方法
int itemCount = combo.getItemCount();
for(int i = 1; i < itemCount; i++) {
combo.removeItemAt(0);
}
String sql = "SELECT * FROM combo_type";
dbConnection = DbConnection.getInstance();
con = dbConnection.getConnection();
stm = con.createStatement();
rst = stm.executeQuery(sql);
ArrayList<Combo> comboList = new ArrayList();
while(rst.next()) {
comboList.add(new Combo(rst.getString(2)));
}
return comboList;
那我做错了什么?这是避免获取重复值的唯一方法吗?我之前尝试过comboBox.removeAllItems()
(在添加此代码之前),然后获取值。但是它给了我一些时间。那么我该怎么解决这个问题呢
# 1 楼答案
这个
是具体类实例的唯一标识符/内存地址
你看到这一点是因为你没有正确地覆盖
方法,用于
Combo
类另外,
DefaultComboBoxModel
是一个启用了泛型的类那么,为什么要使用原始实例呢
你应该处理
相反。也就是说你可以
试试看