2013-06-19 47 views
0

我不知道爲什麼我的代碼不能正常工作,它可能是一些相當容易解決的問題,但我想從頁面獲得輸入,但出現錯誤,說明所選項目無法投射在這種情況下一個對象列中選擇JTable和MySQL問題

void delete() throws SQLException{ 
    int input = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete?", "Delete", JOptionPane.YES_NO_OPTION); 
    if (input == JOptionPane.YES_OPTION) { 
     DVDItem user = (DVDItem)tableDVD.getModel().getValueAt(tableDVD.getSelectedRow(), tableDVD.getSelectedColumn()); 
     mc.deleteItem(user.getkey()); 
    } 
    updateList(); 
} 

我怎麼做,這樣它就會把它轉換成DVDItem對象,然後通過訪問鍵刪除,謝謝

+0

我假設該列包含「DVDItem」的值或屬性。相反,你應該問模型的行的表示,這將取決於你使用的是什麼類型的表模型... – MadProgrammer

+0

我不太明白,我的意思是說在邏輯上傳遞整個值爲排到對象,但我會怎麼做? –

+0

你是如何構建原始表模型的?默認情況下,'TableModel'不會假定行是如何定義的 – MadProgrammer

回答

2

我的意思是在邏輯上它使感覺要將行的整個值傳遞給對象,但我該怎麼做?

DefaultTableModel包含一行中每列的單個對象。你不能神奇地創建一個DVDItem。所以getValueAt()方法將返回給定行/列的Object。它返回的對象取決於您添加到模型的值。

如果你想添加DVDItem對象到模型,那麼你需要創建一個自定義模型。檢查出Bean Table Model。您可以按原樣使用BeanTableModel,也可以通過實施幾種方法來擴展RowTableModel。這是你的選擇。

+0

類DVDItem由4個串和一個int所以每個JTA ble列相應地保存了這些值,我想選擇一行並獲取所有這些字段來創建一個DVDItem對象,我可以使用它來更新數據庫表,但如果我固執或沒有獲取此信息,我很抱歉,但我只需要將dvditem對象傳遞給其他類來操縱它,即時通訊可能會讓所有人都感到困惑 –

+0

因此,您要麼在模型中創建商店和DVDItem對象。這就是RowTableModel的設計目的。或者您使用DefaultTableModel並將數據存儲爲單獨的字段。然後當你想創建你的DVDItem時,你需要調用model.getValueAt(...)5次。一個用於選定行中的每一列。 – camickr

+0

因此DVDItem將是行中值的數組?我會試一試謝謝你! –