Как заполнить JCombobox в зависимости от другого JCombobox в Java eclipse

Грейтинг из Бельгии.

Я уже 3 дня пытаюсь заполнить значения с помощью поля со списком. Я использую Sqlite и использую 4 таблицы для сохранения данных в таблице «Рецепты».

Поэтому, если я выберу, скажем, «мясо» из cmbCategory, из таблицы «sbCategory», другое поле со списком «cmbDescription» из таблицы «Продукты» должно показывать только то, что относится к категории «мясо».

Показанный код работает, я могу получить значения для полей. и это я вставил внизу "fillCombo();"

Я действительно в отчаянии. 3 дня искал, чтобы это заработало, пока не нашел этот сайт. Я надеюсь, что вы, ребята, можете помочь мне здесь. Я восхищаюсь вашими знаниями, ребята. Я шеф-повар, который пытается написать собственное приложение. Заранее спасибо. Я не могу заплатить вам, ребята, но если вы в Бельгии, я могу предложить вам кофе.

// public void fillCombo(){

    try {
        String sql= "Select * from sbCategorie";
        String sql1= "Select * from Products";
        String sql2= "Select * from UnitsRecipe";
        String sql3= "Select * from Classification";
        PreparedStatement pst=connection.prepareStatement(sql);
        PreparedStatement pst1=connection.prepareStatement(sql1);
        PreparedStatement pst2=connection.prepareStatement(sql2);
        PreparedStatement pst3=connection.prepareStatement(sql3);
        ResultSet rs=pst.executeQuery();
        ResultSet rs1=pst1.executeQuery();
        ResultSet rs2=pst2.executeQuery();
        ResultSet rs3=pst3.executeQuery();
        while(rs.next()){
            BoxCategory.addItem(rs.getString("Categorie"));
            //BoxDescription.addItem(rs.getString("Description"));
        }
        while(rs1.next()){
            BoxDescription.addItem(rs1.getString("Description"));
        }
        while(rs2.next()){
            BoxUnit
            .addItem(rs2.getString("Unit"));
        }
        while(rs3.next()){
            BoxClassification
            .addItem(rs3.getString("Classification"));
        }

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

это как показано

BoxCategory.addItemListener (новый ItemListener () {

        public void itemStateChanged(ItemEvent arg0) {
            //
            //
            String s=BoxCategory.getSelectedItem().toString();
            String sql="Select * from Products where Category='"+s+"'";
            //
        try {
            PreparedStatement pst=connection.prepareStatement(sql);

            ResultSet rs=pst.executeQuery();
        while (rs.next()){
            //BoxDescription.removeAllItems();
            BoxCategory.setSelectedItem(rs.getString("Description"));

            }
            } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

person Erol    schedule 03.07.2016    source источник


Ответы (1)


Не могли бы вы заменить следующий фрагмент кода:

BoxCategory.addItemListener(new ItemListener() {

    public void itemStateChanged(ItemEvent arg0) {
        //
        //
        String s = BoxCategory.getSelectedItem().toString();
        String sql = "Select * from Products where Category='" + s + "'";
        //
        try {
            PreparedStatement pst = connection.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                // BoxDescription.removeAllItems();
                BoxCategory.setSelectedItem(rs.getString("Description"));

            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
});

следующим фрагментом:

BoxCategory.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent arg0) {
            String s = BoxCategory.getSelectedItem().toString();
            String sql = "Select * from Products where Category='" + s + "'";
            try {
                PreparedStatement pst = connection.prepareStatement(sql);
                ResultSet rs = pst.executeQuery();
                BoxDescription.removeAllItems();
                while (rs.next()) {
                    BoxDescription.addItem(rs.getString("Description"));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
});

и увидеть результаты?

person Sanjeev Saha    schedule 03.07.2016
comment
@Erol Не могли бы вы сказать мне, решена ли ваша проблема или нет? - person Sanjeev Saha; 03.07.2016
comment
Омг, да. Мне просто нужно было удалить все в правильной строке. Большое Вам спасибо. Решение было прямо передо мной. Большое Вам спасибо. Теперь я могу перейти к другим кадрам. - person Erol; 03.07.2016
comment
Привет @Erol, не могли бы вы принять ответ, нажав на галочку (✔) слева от ответа, чтобы читатели могли узнать, как была решена проблема? - person Sanjeev Saha; 03.07.2016