Табличные значения MySQL в JComboBox
Я разработал свинг-интерфейс с таблицей MySQL. Я поместил два комбинированных списка таким образом, когда выбрано первое значение комбинированного списка (Название бренда), вторые значения комбинированного списка (доступные элементы под этой выбранной торговой маркой) будут загружены с помощью запроса MySQL. Мой код...
try{
String url = "jdbc:mysql://localhost:3306/databasename";
String login = "root"; String password = ""; Connection con = DriverManager.getConnection(url, login, password);
try{
comboBox1 = new JComboBox(); comboBox1.setEditable(false);
comboBox1.addItem("- - -");
Statement stmt1=null;
String query1 = "SELECT brand FROM brands";
stmt1 = con.createStatement();
ResultSet rs1 = stmt1.executeQuery(query1);
while(rs1.next()) {comboBox1.addItem(rs1.getString(1));}
comboBox2 = new JComboBox(); comboBox2.setEditable(false);
comboBox1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event){
String comboBox1Selected=comboBox1.getSelectedItem().toString();
try{
Statement stmt2=null;
String query2 = "SELECT item FROM "+comboBox1Selected+"";
stmt2 = con.createStatement();
ResultSet rs2 = stmt2.executeQuery(query2);
while(rs2.next()) {comboBox2.addItem(rs2.getString(1));}
}
catch (SQLException ex1) {JOptionPane.showMessageDialog(null,"Failed to Item-List..!"); ex1.printStackTrace(); return;}
}
});
}
catch (SQLException ex2) {JOptionPane.showMessageDialog(null,"Failed to Brand-List..!"); ex2.printStackTrace(); return;}
}
catch (SQLException ex3) {ex3.printStackTrace(); JOptionPane.showMessageDialog(null,"Unable to Connect..!"); return;}
Проблема в том, что, несмотря на то, что комбо-боксы работают правильно, если я выберу другой вариант из первого комбо-бокса, второй комбо-бокс не избегает "более старых значений" (они появляются с более новыми значениями).
В чем может быть причина..? Кто-нибудь может объяснить..? Заранее спасибо.
1 ответ
Решение
Вызов comboBox2.removeAllItems()
перед добавлением новых элементов здесь while(rs2.next()) {comboBox2.addItem(rs2.getString(1));}