Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / обработка ItemStateChanged для JComboBox / 1 сообщений из 1, страница 1 из 1
29.11.2012, 16:14:14
    #38058337
bbrider
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка ItemStateChanged для JComboBox
Добрый день!
Есть выпадающий список, при открытии popupmenu в нем происходит запрос к БД на основании которого происходит его заполнение. Далее мне нужно чтобы при выборе элемента из этого списка происходили еще некоторые действия на форме. Так вот проблема в том, что при различающихся элементах в jComboBox всё ок проходит, но если есть совпадающие элементы, то те действия, которые должны пройти при смене Item'a происходят только для первого из них, хотя выбран следующий.
*программа учебная, и я тоже только осваиваю java.

1) также, я не знаю, как лучше стратегически сделать запрос к бд - так и оставить его в открытии popupmenu или как-то иначе?
2) в netbeans отладчике я не знаю, как посмотреть что делается при выборе элемента из списка, когда открывается popupmenu - оно просто не открывается. Точка останова в коде popupmenuwillBecomeVisible, далее при первом добавлении в строке
jComboBox2.addItem(rs.getString("model"));
вызывается ItemStateChanged и всё - вижу только что для первого Item всё верно.
То есть вопрос в том, как можно при отладке таки пронаблюдать сам выпадающий список и сделать в нем выбор самостоятельно?
3) Как в отладчике не выходить за пределы текущего файла? Мне не надо например лезть в контейнеры swing при изменении объектов на форме.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
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");
        }
    }

...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / обработка ItemStateChanged для JComboBox / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]