在我目前的项目中,我有一个包含4列的jtable。我不希望在第二列中存储重复数据,所以在将其存储到数据库之前,我会检查jtable中的每一行。
这是我的代码:
String s="";
int row = table.getRowCount();
for (int i=0; i<row; i++)
{
s = table.getValueAt(i, 1).toString().trim();
if (name.getText().equals(s))
{
JOptionPane.showMessageDialog(null, "data alreadyexist.","message",JOptionPane.PLAIN_MESSAGE);
break;
} else {
add();
break;
}
}
答案 0 :(得分:2)
你不能遍历整个表格,因为我可以看到它。您只检查第一行中的数据是否可用。在此之后,该方法会注意到第2行中可能存在相同的数据并且中断,因此您添加了1行并停止了,因为您逐行检查它,并且对于不匹配的每行,您确实添加了一行,直到找到与您要添加的行匹配的行
String s = "";
boolean exists = false;
for (int i=0; i<table.getRowCount(); i++)
{
s = table.getValueAt(i, 1).toString().trim();
if(name.equals(s))
{
exists = true;
break;
)
)
if(!exists)
add();
else
JOptionPane.showMessageDialog(null, "data already exist.","message",JOptionPane.PLAIN_MESSAGE);
现在你只需检查你正在寻找的字符串是否是正确的方式,它应该工作
答案 1 :(得分:1)
试试这个
ArrayList<String> contentList = new ArrayList();
int row = table.getRowCount();
for (int i=0; i<row; i++)
{
String str = table.getValueAt(i, 1).toString().trim();
if (contentList.contains(str))
{
JOptionPane.showMessageDialog(null, "data alreadyexist.","message",JOptionPane.PLAIN_MESSAGE);
break;
} else {
contentList.add(str);
add();
break;
}
}
答案 2 :(得分:1)
试试这个:
int row = jTable1.getRowCount();
Object[] content = new Object[row];
for (int i = 0; i < row; i++) {
content[i] = jTable1.getValueAt(i, 0);
}
Object value_to_find= 2000;
boolean exist = Arrays.asList(content).contains(value_to_find);
if (exist){
JOptionPane.showMessageDialog(null, "Value exist", "Duplicate", JOptionPane.ERROR_MESSAGE);
} else {
addRow();
}
使用Arrays.asList(content)保存数组中的所有行,而不是搜索value_to_find .contains(value_to_find)