如果JTable单元格和变量之间的语句

时间:2014-05-06 17:17:39

标签: java swing if-statement jtable

我正在使用Java中的pos(如openbravo或dolibarr)面板。当用户在获取产品信息后按下JButton时,产品会添加到JTable。但是,如果他按下按钮两次或更多次,则会再次添加相同的产品,因此我可以使用JTable 2,3或4个相同的行。这就是为什么我试图限制它。

我的想法是比较JTable中包含产品ID的单元格和产品信息表单中包含产品ID的变量。

问题是,当我第一次打开面板时,我的JTable为空,因此我的if声明无效。

我需要一些建议。

jButton1.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
    if(idprod!=0)
    {   
        montanttva1 = prixtotalttc - prixtotalht;
        int row = tableaupan.getRowCount();
        for (int i = 0; i < row; i++){
            int test =(int) (tableaupan.getModel().getValueAt(i,0)); 
            if (test==idprod)
            {
                JOptionPane.showMessageDialog(null, "Product is already in the basket !","Error",JOptionPane.ERROR_MESSAGE);     
            }
            else
            {
            modele.addCaisse(new Caisse(idprod,JTitre.getText().toString(),cqte,prixunittcc,prixht,montanttva1,prixtotalht,prixtotalttc,typetva,tva));
            }
        }
    }
    else
    {
        JOptionPane.showMessageDialog(null, "Nothing to add in the basket !", "Errorr",JOptionPane.ERROR_MESSAGE);                  
    }
}
});

谢谢你的评论,我理解我的逻辑错误。现在我必须在我的模型中添加这样的方法吗?

public boolean containsId(int idprod) {
*condition for true*
return true;
*condition for false*
return false;
}

2 个答案:

答案 0 :(得分:0)

你的逻辑错误。您将ID与每行进行比较。对于每一行,如果行&#39; sID与产品ID不匹配,则添加新行。

逻辑应该是:

if (modele.containsId(idprod)) {
    addProduct();
}
else {
    showError();
}

现在您只需要将containsId()方法添加到模型中。

答案 1 :(得分:0)

我找到了这个解决方案,它的确有效:

jButton1.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
if(idprod!=0)
{
    montanttva1 = prixtotalttc - prixtotalht;
    int row = tableaupan.getRowCount();

    for (int i = 0; i < row; i++){
        if(tableaupan.getValueAt(i,0).equals(idprod))
        {
             OptionPane.showMessageDialog(null, "Product is already in the basket !","Error",JOptionPane.ERROR_MESSAGE);     
             return;                       
        }
    }
modele.addCaisse(new Caisse(idprod,JTitre.getText().toString(),cqte,prixunittcc,prixht,montanttva1,prixtotalht,prixtotalttc,typetva,tva));
}
else
{
    JOptionPane.showMessageDialog(null, "Nothing to add to basket !", "Errorr",JOptionPane.ERROR_MESSAGE);
}
}
});