比较表行,防止重复

时间:2014-11-27 14:06:52

标签: java swing jtable

我试图将行从一个表添加到另一个表,还有datepicker,我想检查日期是否匹配。

int i=jTable1.getSelectedRow();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
jXDatePicker1.setFormats(dateFormat);
String date = dateFormat.format(jXDatePicker1.getDate()).toString();
String c1=jTable1.getValueAt(i, 0).toString();
String c2=jTable1.getValueAt(i, 1).toString();
String c3=jTable1.getValueAt(i, 2).toString();
String c4=jTable1.getValueAt(i, 3).toString();
String c5=price.getText().toString();
String c6=jTextField1.getText().toString();
String c7=date;
model.addRow(new Object[]{c1, c2, c3, c4, c5, c6, c7});
jTable2.setModel(model);
while(jTable2.getRowCount()>1) {
    for (int k = 0; k < jTable2.getRowCount(); k++) {
        if (c7.equals(jTable2.getValueAt(k, 6).toString())) {
        }
        JOptionPane.showMessageDialog(null, "Record exist");
        model.removeRow(jTable2.getRowCount()-1);
        return;
    }
}

即使日期不同,它也会抛出错误:

enter image description here

似乎没有任何效果我试图比较ID而不是日期

while(jTable2.getRowCount()>1) {
            for (int k = 0; k < jTable2.getRowCount(); k++) {
                int t1=Integer.parseInt(jTable2.getValueAt(k, 0).toString());
                if (c1==t1) {
                    JOptionPane.showMessageDialog(null, "Record exist");
                    model.removeRow(jTable2.getRowCount()-1);
                    return;
                }
            }
        }

将两个值解析为int仍然没有。我的循环不起作用

1 个答案:

答案 0 :(得分:1)

我认为你的if语句没有提到任何内容。

否则,不要将两个日期作为字符串进行比较,而是将它们设为Date,然后比较它们。

只需更改这些行:

Date date = dateFormat.parse(jXDatePicker1.getDate().toString());
//your code
Date c7=date;

然后你的if语句应该是:

Date rowDate= dateFormat.parse(jTable2.getValueAt(k, 6).toString());

if (c7.compareTo(rowDate)==0) { //the two dates are equal
                JOptionPane.showMessageDialog(null, "Record exist");
                model.removeRow(jTable2.getRowCount()-1);
                return;
    }