【发布时间】:2019-08-14 11:27:31
【问题描述】:
我正在尝试使用 ArrayList 和 DefaultComboBoxModel 从 MySQL 数据库中获取一些值到 JComboBox 以避免获取重复值。因为当我调用该方法来获取值时,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);
}
}
和Fetch方法,
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()(在添加此代码之前),然后获取值。但它有时会给我NullPointerException。那么我该如何解决这个问题呢?
【问题讨论】:
-
您能说明一下您需要解决的问题吗?是否仅用于 String 表示?
-
@LppEdd 主要是我需要避免在一次又一次调用JComboBox fetch方法的时候获取重复值。
-
这个“获取”方法在哪里?
-
@LppEdd 我已经更新了我的问题。
标签: java swing arraylist jcombobox