2010-04-30 75 views

回答

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

是的,它是possible.Basically JTable的是editable.you可以通過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(); 
     } 
    } 
相關問題