我有一個名爲「Cart」的JTable,用戶可以在購買產品之前添加它們。該表中唯一的可編輯列是最後一列,稱爲數量,它允許用戶更改他們希望購買的產品數量。默認情況下,在添加產品時,該值爲1。當我使用這些默認值創建發票時,ORDERS數據庫表已成功更新。但是,如果我通過鍵入數量來更改數量單元格的數量,則會得到一個我不知道如何解決的異常。這似乎是我試圖從該列獲得的整數值返回爲一個字符串,而不是整數。無法從JTable列中獲取正確的值
基本上我有整數tempStock其中我存儲產品數量。我從表格的「i」行和最後一列「4」中得到該值。
int tempStock = (int)cartModel.getValueAt(i, 4);
當程序在此表中添加新行時,fourht列默認爲1,當我調用該值時,我會得到整數。但是,如果我在該列中鍵入其他值,則不再獲取int,而是String。
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
我已經找到了一個臨時變通,通過檢驗變量的類型:你必須setColumnClass在TableModel值爲整數
/** Check if Quantity field was updated **/
if (cartModel.getValueAt(i, 4).getClass().getName().equals("java.lang.Integer")) {
tempStock = (int)cartModel.getValueAt(i, 4);
} else {
tempStock = Integer.parseInt((String)cartModel.getValueAt(i, 4));
}
嘗試使用'Integer.parseInt(String)'而不是類型轉換,這是否工作? – Simiil 2012-03-22 09:40:33
@Simiil也嘗試過。沒有工作,因爲那時我得到了完全相反的例外。也就是說,更新後的值可以工作,但是1的失效值將試圖解析整數而不是字符串。你知道在java中是否有方法來檢測我得到的變量類型? – vedran 2012-03-22 09:44:41