代码之家  ›  专栏  ›  技术社区  ›  Akshat Jain

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

  •  -1
  • Akshat Jain  · 技术社区  · 7 年前
    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 回复  |  直到 7 年前
        1
  •  0
  •   Pavneet_Singh    7 年前

    一旦你申请 removeAllItems 那么组合框中没有项目

    所以 getSelectedItem ComboBoxModel getSelectedItem 功能状态

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

    oracle docs 没有声明任何关于返回null的内容

    null toString() 在里面 因为您遇到了nullpointer异常,所以请确保在调用时有一些项

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