是否可以在jtable中编辑数据并保存?

时间:2010-04-30 08:35:10

标签: java jtable

我想知道是否可以通过JTable查看我的值,然后通过那里编辑它们?

3 个答案:

答案 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();
        }
    }