【问题标题】:JTable-condition if((table.getValueAt(0, 1)).equals("")) shows errorJTable-condition if((table.getValueAt(0, 1)).equals("")) 显示错误
【发布时间】:2013-02-27 16:31:34
【问题描述】:

我做了空表:

String columnNames[] = {"br", "artikal", "cena", "kolicina","ukupno" };  
String dataValues[][] =new String[10][5];  
DefaultTableModel tableModel=new DefaultTableModel(dataValues, columnNames);

我想按顺序从第一行到最后一个循环填充一列,如果条件:

if ((((JButton)e.getSource()).getText()).equals(name.getName())){

    for (int i=0;i<10;i++){

        String products= (String) bill.tableModel.getValueAt(i, 1);
        String p=Double.toString(name.getPrice());

        if(products.equals(""))                                                                                                  
            bill.tableModel.setValueAt(name.getName(),i, 1);
            bill.tableModel.setValueAt(p,i, 2);
            break;   
    }
}

当我单击按钮时,没有显示任何内容,但是当我删除 if 条件 if (products.equals("")) 时它正在工作,而是填充空列中的单元格,它将文本再次设置为列中的第一个单元格。

我试过if ( dataValues[i][1].equals("null"))if (products.equals("null")) 什么也没显示。 当我把System.out.print((String) bill.tableModel.getValueAt(0, 1)) 在控制台上显示“null”。

还有其他方法可以填充列中的单元格吗?

【问题讨论】:

  • 如果productsnull,当你尝试使用它时它会抛出一个NPE。
  • java.lang.NullPointerException
  • if ((((JButton)e.getSource()).getText()).equals(name.getName())){ 是实现动作监听器逻辑的一种相当奇怪的方式...
  • 没错。所以...检查null,如果这是预期的情况。 if (products == null)
  • 谢谢!成功了,谢谢!!!!!!

标签: java swing if-statement jtable jbutton


【解决方案1】:

您的代码应该是:

if(products!=null && products.equals("")) {
    bill.tableModel.setValueAt(name.getName(),i, 1);
    bill.tableModel.setValueAt(p,i, 2);
}

我假设 if 语句的主体周围有花括号,因为我不明白单击按钮时您要做什么......

【讨论】:

    【解决方案2】:

    这很好用:

     if (e.getSource()instanceof JButton){
    
                      for (Product name:Main.manu){
    
    
                            if ((((JButton)e.getSource()).getText()).equals(name.getName())){
    
    
                                for (int i=0;i<10;i++){
    
                                    String products= (String) bill.tableModel.getValueAt(i, 1);
                                    String p=Double.toString(name.getPrice());
    
                                    if (products!=null)  
                                    continue;
                                    {                                                                                                
    
                                        bill.tableModel.setValueAt(name.getName(),i, 1);
                                        bill.tableModel.setValueAt(p,i, 2);
    
    
                                    break;   }
    
    
                            }
    
                          }
                     }                
                    }
                }
    

    【讨论】:

      猜你喜欢
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      相关资源
      最近更新 更多