Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

обработка ItemStateChanged для JComboBox

86K
29 ноября 2012 года
bbrider
1 / / 15.11.2012
Добрый день!
Есть выпадающий список, при открытии 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");
        }
    }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог