如何检查jTable
我想要从jField
添加的值是否存在?我在Vector<Object>
中使用jTable
。
答案 0 :(得分:1)
JTable
不提供此功能。
JTable
只是表模型的可视化。您的数据模型应该具有您需要的业务功能,例如告诉您是否存在条目。您将数据模型包装在TableModel
内,JTable
可以显示该数据模型。然后,您只能操纵数据模型。这是contains
(或类似)方法应存在的位置。如果您的数据模型是Set
,则内置它。
为方便起见,数据模型和TableModel
可以是同一个对象,有时它是合适的。但只使用Vector
并不是一个好主意。遗憾的是JTable
有一些方便的方法可以用于静态数据。
只需在TableModel
之上构建自己的AbstractTableModel
即可。请参阅JTable tutorial。
答案 1 :(得分:1)
Vector<Object>
为JTable做了一个非常糟糕的模型!
您应该编写自己的模型类,可能来自javax.swing.table.AbstractTableModel,类似
public class FooModel extends javax.swing.table.AbstractTableModel {
// AbstractTableModel
public int getRowCount() { //TBD }
public int getColumnCount() { //TBD }
public Object getValueAt(int row, int column) { //TBD }
// Insert a value into model only if not exists yet
public void insertData(String something) throws AlreadyExistsException {
// Check if element already in model
// Either throw exception or update model
// Dont forget to call fireTableRowsInserted() !
}
}
答案 2 :(得分:1)
完成了我的问题!
private boolean isEntry(String name, String size) {
int rowCount = jTable.getRowCount();
String row = null, tname = null, tsize = null, input = name + "|" + size;
for (int i = 0; i < rowCount - 1; i++) {
tname = (String) jTable.getValueAt(i, 0);
tsize = (String) jTable.getValueAt(i, 2);
row = tname + "|" + tsize;
if (input.equalsIgnoreCase(row)) {
return true;
}
}
return false;
}
答案 3 :(得分:1)
这应该这样做。
public boolean existsInTable(JTable table, Object[] entry) {
// Get row and column count
int rowCount = table.getRowCount();
int colCount = table.getColumnCount();
// Get Current Table Entry
String curEntry = "";
for (Object o : entry) {
String e = o.toString();
curEntry = curEntry + " " + e;
}
// Check against all entries
for (int i = 0; i < rowCount; i++) {
String rowEntry = "";
for (int j = 0; j < colCount; j++)
rowEntry = rowEntry + " " + table.getValueAt(i, j).toString();
if (rowEntry.equalsIgnoreCase(curEntry)) {
return true;
}
}
return false;
}