Я столкнулся с подобной проблемой: если вы введете что-либо в базу данных, что должно быть отражено в JComboBox, вы не сможете изменить значения этого поля со списком.Было бы здорово, если бы вы могли добавлять вещи в JComboBox «на лету» напрямую, но вы должны получить эти данные, создать из них новую ComboBoxModel, а затем настроить JComboBox на эту новую модель.
Здесь я использую DefaultComboBoxModel, который может принимать массив объектов (обычно строк) или вектор.Если вы используете векторы для представления своей базовой модели данных, это будет намного проще, поскольку векторы являются динамическими структурами данных.
Мой код:
Vector<String> s = new Vector<String>();
try {
// I'm using prepared statements, get the ResultSet however you like
ResultSet rs = myPreparedStatement.executeQuery();
while ( rs.next() ) {
// Change "1" to whatever column holds your data
s.add(rs.getString(1));
}
} catch (SQLException ex) {
ex.printStackTrace(); // or whatever
}
DefaultComboBoxModel jcbModel = new DefaultComboBoxModel(s);
jcb.setModel(jcbModel);
РЕДАКТИРОВАТЬ: Помните, что столбцы ResultSet имеют значение 1-индексируется, а не 0 индексируется!Получает меня каждый раз.