我在JScrollPane中有一個JTable,數據來自數據庫。單元格是可編輯的,我想將新值(編輯過的)保存到數據庫中。問題是,getValueAt(row,col)返回舊的未編輯的值。如何從細胞中保存新值,而不是舊細胞?
這是從單元格中獲取值並將它們插入到數據庫中的代碼。
DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); int row = table.getEditingRow(); if(row == -1) return -1; String name = tableModel.getValueAt(row, 0).toString(); String stringPrice = tableModel.getValueAt(row, 1).toString(); float price = Float.parseFloat(stringPrice); products.updateProduct(name, price); ... return 1;
這裏是我在的UpdateProduct(名稱,價格)方法獲得:代替
UPDATE products SET `prod_name` = 'OLD_NAME', `prod_price` = 'OLD_PRICE' WHERE `id` = 4
:
UPDATE products SET `prod_name` = 'NEW_NAME', `prod_price` = 'NEW_PRICE' WHERE `id` = 4
有可能是一個簡單的解決方案,但我無法弄清楚。任何幫助表示讚賞。
這是否經常或間歇發生?我在JTable中看到過這種行爲:1)單擊一個單元格,2)編輯它,3)點擊「enter」或者直接點擊其他地方。在步驟3)之前,表模型不會改變;雖然單元編輯器處於活動狀態,但它不會將值傳播到模型。 – iluxa 2011-02-17 23:25:53
它總是發生......現在你提到「進入」,我試圖打它,它的工作原理(我改變getEditingRow()getSelectedRow())後,但我必須打開回車,然後單擊保存按鈕。完成編輯後可以直接點擊保存,而無需點擊回車?無論如何感謝.. – radonys 2011-02-17 23:38:21