它在加载帧时运行第一次但是当我选择secound项时它会给我错误

时间:2017-07-02 17:50:08

标签: java awt jcombobox

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           

        jComboBox1.revalidate();
        jComboBox2.removeAllItems();
        jComboBox3.removeAllItems();
        jComboBox4.removeAllItems();
        String b1=jComboBox1.getSelectedItem().toString();
        String bb=this.branch;
        String y1=this.year;
            if(y1!=null){
                String[] b=y1.split(";");
                System.out.println(y1);
                System.out.println(b1);
               int size=b.length;
               System.out.println(size);
                for(int i=0;i<size;i++){
                if(b[i].matches("(?i).*"+b1+".*")){
                    System.out.println(b[i]);
               jComboBox2.addItem(b[i].replaceAll(":","").replaceAll(b1.toLowerCase(), "")); 
            jComboBox2ActionPerformed( evt);
            }}}
    } 

它在加载帧时运行第一次但是当我选择secound项时它会给我错误

1 个答案:

答案 0 :(得分:0)

申请removeAllItems后,组合框中没有项目

所以getSelectedItem在内部使用ComboBoxModel getSelectedItem函数说明

  

所选项目,如果没有选择,则为null

虽然oracle docs没有说明返回null

的任何内容

解决方案:null中的toString()null会导致null指针异常,因此请确保在调用getSelectedItem或进行无效检查时有一些项目< / p>

String b1=jComboBox1.getSelectedItem()!=null ? jComboBox1.getSelectedItem().toString(): "";