Ошибка выбора элементов в JComboBox ExecuteQuery - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть 3 jComboBox.Первый из них относится к типу номера.Когда я выбираю Тип комнаты на первом jComboBox, он должен показывать во втором jComboBox всю доступную комнату, но когда я выбираю один из Тип комнаты, появляется ошибка

https://imgur.com/a/wpmhLfD

Вот код действия, выполненного для первого jComboBox

первого действия jComboBox, выполненного *

    if(jComboBox13.getSelectedItem().toString().equals("SELECT")){

    }else{
            try{
            String like = jComboBox13.getSelectedItem().toString();
            String sql = "Select * From Room_Master\n" +
                         "inner join Room_Type on Room_Master.Room_Type_ID=Room_Type.Room_Type_ID\n" +
                         "where Room_Type = '"+like+"'";
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            jComboBox14.removeAllItems();
            jComboBox14.addItem("SELECT");
        while(rs.next()){
            String add1 = rs.getString("Room_No.");
            jComboBox14.addItem(add1);
        }
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }finally {
            try {
               rs.close();
               pst.close();
            }catch(Exception e){

            }
        }
    }

второго действия jComboBox, выполненного

if(jComboBox14.getSelectedItem().toString().equals("SELECT") | jComboBox14.getSelectedItem().toString().isEmpty()){

    }else{
            try{

            String like = jComboBox14.getSelectedItem().toString();
            String sql = "Select * from Bed_Master\n" +
                         "inner join Room_Master on Bed_Master.Room_ID=Room_Master.Room_ID\n" +
                         "where [Room_No.] = '"+like+"'";
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            jComboBox15.removeAllItems();
            jComboBox15.addItem("SELECT");
        while(rs.next()){
            String add1 = rs.getString("Bed_No.");
            jComboBox15.addItem(add1);
        }
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
            e.printStackTrace();
        }finally {
            try {
               rs.close();
               pst.close();
            }catch(Exception e){

            }
        }
    }

, но после iвыберите другой тип комнаты, он будет работать, я попытался удалить "combobox.removeAllItems ();"но он будет добавлять все элементы в jCombobox почти 1 неделю, пытаясь понять, может кто-нибудь помочь, пожалуйста

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Когда вы вызываете removeAllItems, он запускает actionListener для jComoboBox14, и на этом этапе у него не будет никаких элементов, поэтому getSelected вернет NULL

, изменив if на

if(jComboBox14.getItemCount() > 0 && (jComboBox14.getSelectedItem().toString().equals("SELECT") |
                                             jComboBox14.getSelectedItem().toString().isEmpty())){
0 голосов
/ 04 февраля 2019

Прежде всего.Вы должны дать своим переменным объектов полезное имя: например: jComboBox13 --> JComboBox comboRoomsType = new JComboBox(); или любое другое имя, которое вы предпочитаете.

Тогда было бы неплохо увидеть весь задействованный код.Я не могу видеть, где вы инициализируете ResultSet или PreparedStatement;

Я Угадаю, NullPointer происходит из оператора select, когда пытаюсь получить значения.

if(jComboBox13.getSelectedItem().toString().equals("SELECT")){

}else{
        try{
        String like = jComboBox13.getSelectedItem().toString();
        String sql = "Select * From Room_Master RM " +
                     "inner join Room_Type RT on RM.Room_Type_ID=RT.Room_Type_ID " 
                     +"where Room_Type = '"+like+"'";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();
        jComboBox14.removeAllItems();
        jComboBox14.addItem("SELECT");
     //you can also check if there are values first.
    while(rs.hasNext()){
        rs.next();
        String add1 = rs.getString("Room_No");
       //You can also use 
       //String add1 = rs.getInt(number of column of <Room_No> );
        jComboBox14.addItem(add1);
    }
    }catch(Exception e){
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, e);
    }finally {
        try {
           rs.close();
           pst.close();
        }catch(Exception e){

        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...