如何检查jTable
我尝试添加的值是否jField
存在?我正在使用Vector<Object>
.jTable
问问题
15349 次
4 回答
2
JTable
不提供此功能。
JTable
只是表模型的可视化。您的数据模型应该具有您需要的业务功能,例如告诉您是否存在条目。您将数据模型包装在TableModel
可以由JTable
. 然后,您只需操作您的数据模型。这是contains
应该存在(或类似)方法的地方。如果您的数据模型是Set
内置的。
为方便起见,数据模型和TableModel
可以是同一个对象,有时它是合适的。但是仅仅使用 aVector
并不是一个好主意。可悲的是JTable
,有一些方便的方法允许对静态数据进行此操作。
只需TableModel
在AbstractTableModel
. 请参阅JTable 教程。
于 2013-03-26T14:46:22.810 回答
2
这应该这样做。
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;
}
于 2015-06-02T09:14:37.217 回答
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() !
}
}
于 2013-03-26T14:54:25.443 回答
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;
}
于 2013-03-27T13:49:55.127 回答