0
У меня проблема, вместо замены элементов в combobox2, это стеки. Я попытался поместить bookss.removeAllItems(); поверх bookss.addItem (имена); но я получаю сообщение об ошибке, когда я нажимаю на другие элементы в combobox1.Заполнение ComboBox с помощью ComboBox
вот мой код
String caa = categorys.getSelectedItem().toString();
if ("Fiction".equals(caa))
{
String acct = categorys.getSelectedItem().toString();
try{
pst = con.prepareStatement("select * from books where category=?");
pst.setString(1, acct);
ResultSet rsf = pst.executeQuery();
rsf.next();
try{
rsf = stmt.executeQuery("select * from BOOKS WHERE category='Fiction'");
while(rsf.next())
{
String names = rsf.getString("book_title");
bookss.addItem(names);
}
}catch(SQLException err){
System.out.println(err);
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, e);
}
}
if ("Horror".equals(caa))
{
String acct = categorys.getSelectedItem().toString();
try{
pst = con.prepareStatement("select * from books where category=?");
pst.setString(1, acct);
ResultSet tts = pst.executeQuery();
tts.next();
try{
tts = stmt.executeQuery("select * from BOOKS WHERE category='Horror'");
while(tts.next())
{
String names = tts.getString("book_title");
bookss.addItem(names);
}
}catch(SQLException err){
System.out.println(err);
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null, e);
}
}
ли вы назвать 'REVALIDATE()' после удаления и повторного добавления компонентов? Когда вы добавляете компоненты в уже видимый контейнер, это считается недопустимым (doc для ['invalidate()'] (http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html# invalidate())): * Неверная маркировка контейнера указывает, что контейнер необходимо выложить. Этот метод называется автоматически при изменении любой информации, связанной с компоновкой (например, установка границ компонента или добавление компонента в контейнер) *. Поскольку вы добавляете новые компоненты в контейнер (ваш JComboBox), вам нужно пересмотреть –
. Я не знаю, что произошло, но теперь оно работает – DOODpls
Без чего-либо? Похоже на ошибку с жестким воспроизведением; знак того, что вы неправильно размещаете свой код Swing в [Event Dispatch Thread] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html): «* Некоторые методы компонента Swing помечены «thread safe» в спецификации API, их можно безопасно вызывать из любого потока. Все остальные методы Swing-компонента должны быть вызваны из потока отправки событий. Программы, которые игнорируют это правило, могут работать правильно большую часть времени, но подвержены непредсказуемым ошибки, которые трудно воспроизвести. * " –