обработка ItemStateChanged для JComboBox
Есть выпадающий список, при открытии popupmenu в нем происходит запрос к БД на основании которого происходит его заполнение. Далее мне нужно чтобы при выборе элемента из этого списка происходили еще некоторые действия на форме. Так вот проблема в том, что при различающихся элементах в jComboBox всё ок проходит, но если есть совпадающие элементы, то те действия, которые должны пройти при смене Item'a происходят только для первого из них, хотя выбран следующий.
*программа учебная, и я тоже только осваиваю java.
1) также, я не знаю, как лучше стратегически сделать запрос к бд - так и оставить его в открытии popupmenu или как-то иначе?
2) в netbeans отладчике я не знаю, как посмотреть что делается при выборе элемента из списка, когда открывается popupmenu - оно просто не открывается. Точка останова в коде popupmenuwillBecomeVisible, далее при первом добавлении в строке
jComboBox2.addItem(rs.getString("model"));
вызывается ItemStateChanged и всё - вижу только что для первого Item всё верно.
То есть вопрос в том, как можно при отладке таки пронаблюдать сам выпадающий список и сделать в нем выбор самостоятельно?
3) Как в отладчике не выходить за пределы текущего файла? Мне не надо например лезть в контейнеры swing при изменении объектов на форме.
Код:
private void jComboBox2ItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
if (jComboBox2.getItemCount() > 0) {
if (evt.getStateChange()==ItemEvent.SELECTED) {
jTextField1.setText(jComboBoxPrice.getItemAt(jComboBox2.getSelectedIndex()).toString());
if (rsCountArray[jComboBox2.getSelectedIndex()] != null) {
if (Integer.parseInt(rsCountArray[jComboBox2.getSelectedIndex()])>0) {
checkbox1.setState(true);
}
}
}
}
}
private void jComboBox2PopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
// TODO add your handling code here:
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost/cartrade"+
"?user=root&password=1&characterEncoding=utf8");
}
catch (SQLException ex) {
// handle any errors
}
try {
Statement stmt = conn.createStatement();
ResultSet rsCount = stmt.executeQuery("SELECT COUNT(*) "
+ "FROM carsToSell INNER JOIN carList "
+ "ON carList.idCarList=carsToSell.idCarList "
+ "WHERE carList.brand = " + "\"" + jComboBox1.getSelectedItem() + "\"");
while (rsCount.next()) {
rsCountArray = new String[Integer.parseInt(rsCount.getString(1))];
System.out.println(rsCountArray.length);
}
ResultSet rs = stmt.executeQuery(
"SELECT "
+ "carlist.brand AS brand, carlist.model AS model, carstosell.price AS price, carstosell.quantity AS quantity "
+ "FROM (carlist inner join carstosell ON carlist.idcarlist = carstoSell.idCarList) "
+ "WHERE carlist.brand = " + "\"" + jComboBox1.getSelectedItem() + "\""
);
jComboBox2.removeAllItems();
jComboBoxPrice.removeAllItems();
jTextField1.setText("");
checkbox1.setState(false);
int i = 0;
while (rs.next()) {
jComboBoxPrice.addItem(rs.getString("price"));
//jComboBoxPrice.getItemAt(0).toString();
rsCountArray[i] = rs.getString("quantity");
i++;
jComboBox2.addItem(rs.getString("model"));
}
}
catch (SQLException ex) {
jComboBox2.addItem("error connecting to DB");
}
}
// TODO add your handling code here:
if (jComboBox2.getItemCount() > 0) {
if (evt.getStateChange()==ItemEvent.SELECTED) {
jTextField1.setText(jComboBoxPrice.getItemAt(jComboBox2.getSelectedIndex()).toString());
if (rsCountArray[jComboBox2.getSelectedIndex()] != null) {
if (Integer.parseInt(rsCountArray[jComboBox2.getSelectedIndex()])>0) {
checkbox1.setState(true);
}
}
}
}
}
private void jComboBox2PopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
// TODO add your handling code here:
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost/cartrade"+
"?user=root&password=1&characterEncoding=utf8");
}
catch (SQLException ex) {
// handle any errors
}
try {
Statement stmt = conn.createStatement();
ResultSet rsCount = stmt.executeQuery("SELECT COUNT(*) "
+ "FROM carsToSell INNER JOIN carList "
+ "ON carList.idCarList=carsToSell.idCarList "
+ "WHERE carList.brand = " + "\"" + jComboBox1.getSelectedItem() + "\"");
while (rsCount.next()) {
rsCountArray = new String[Integer.parseInt(rsCount.getString(1))];
System.out.println(rsCountArray.length);
}
ResultSet rs = stmt.executeQuery(
"SELECT "
+ "carlist.brand AS brand, carlist.model AS model, carstosell.price AS price, carstosell.quantity AS quantity "
+ "FROM (carlist inner join carstosell ON carlist.idcarlist = carstoSell.idCarList) "
+ "WHERE carlist.brand = " + "\"" + jComboBox1.getSelectedItem() + "\""
);
jComboBox2.removeAllItems();
jComboBoxPrice.removeAllItems();
jTextField1.setText("");
checkbox1.setState(false);
int i = 0;
while (rs.next()) {
jComboBoxPrice.addItem(rs.getString("price"));
//jComboBoxPrice.getItemAt(0).toString();
rsCountArray[i] = rs.getString("quantity");
i++;
jComboBox2.addItem(rs.getString("model"));
}
}
catch (SQLException ex) {
jComboBox2.addItem("error connecting to DB");
}
}