我想知道是否可以通过JTable查看我的值,然后通过那里编辑它们?
答案 0 :(得分:4)
当然可以让TableModel.isCellEditable()
返回true
,并在必要时设置TableCellEditor
。
答案 1 :(得分:4)
isCellEditable(int row,int col) 此方法确定允许用户修改哪些行和列。由于此方法返回布尔值,如果所有单元格都可编辑,则只返回true。要防止JTable编辑特定的列或行值,它将从此方法返回false。以下代码仅允许显示第一列,同时允许修改其余列。
// Make column one noneditable
while allowing the user to edit at
all // other columns.
If (col == 1){
return false;
}
else{
return true;
}
public void setValueAt(Object value, int row, int col)
当用户对可编辑单元格进行更改时,将通过此方法通知表模型。新值以及它出现的行和列将作为参数传递给此方法。如果原始数据来自数据库,则此方法变得很重要。正如您将看到的,从数据库中检索的数据在表模型中本地保存,通常作为向量。当用户更改JTable中的单元格值时,表模型中的相应数据不会自动更改。您有责任在此事件中添加代码,以确保表模型中的数据与JTable中的数据相同。在添加代码以更新数据库时,这一点变得很重要。以下代码使用用户刚刚在JTable中输入的新值更新表模型中的数据(保存在对象数组中)。
// Update the array of objects with
// the changes the user has just entered in a cell.
// Then notify all listeners (if any) what column
// and row has changed. Further processing may take place there.
rowData[row][col] = value;
fireTableDataChanged();
答案 2 :(得分:2)
是的,这是可能的。基本上jtable是可编辑的。您可以通过TableModel.isCellEditable()方法进行检查。编辑后,您可以将表值存储在二维数组中并存储在数据库中。 int i; int j;
String tableData = new String[row count][column count];
for(i = 0; i < row count; i++)
{
for(j = 0; j < 3; j++)
{
tableData[i][j] = table.getValueAt(i, j).toString();
}
}