2014-01-23 37 views
0

我的問題:如何讓用戶執行多個從jtable通過按鈕刪除。該表是
鏈接到我的數據庫。我創建了一個表模型在另一個類並鏈接到我的SalesReceiptTable。 當用戶單擊刪除按鈕時,我可以從數據庫和表中刪除一行。 我應該做循環rowSelected ??多重刪除記錄從jtable通過id鏈接到數據庫

//Button to perform delete 
    JButton btnDelete = new JButton("Delete"); 
btnDelete.setFont(new Font("Tahoma", Font.PLAIN, 13)); 
btnDelete.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e) { 
    int rowSelected=SalesReceiptTable.getSelectedRow(); 
if(rowSelected>=0) 
{ 
String id = SalesReceiptTable.getValueAt(rowSelected, 7).toString(); 
SalesReceipt1 e1=new SalesReceipt1(Integer.parseInt(id)); 
    e1.deleteSalesReceipt(); 
ArrayList<SalesReceipt1> result= SalesReceipt1.retrieveAllSalesReceipt(); 
SalesReceiptTableModel model= new SalesReceiptTableModel(result); 
SalesReceiptTable.setModel(model); 
    } 
else{ 
JOptionPane.showMessageDialog(null,"No record selected","Alert", JOptionPane.ERROR_MESSAGE); 
    } 

    //My sql statement in my entity class 
    public boolean deleteSalesReceipt(){ 
boolean success = false; 
DBController db = new DBController(); 
    String dbQuery; 
db.getConnection(); 
    dbQuery = "DELETE FROM SalesReceipt WHERE salesReceiptId ='" + salesReceiptId +"'"; 
    if (db.updateRequest(dbQuery) == 1){ 
success = true; 
           } 
    db.terminate(); 
    return success; 
} 
+0

您能展示您嘗試過的以及您遇到問題的位置嗎? –

回答

2

幾種方法是可能的:

  • 指定在表的setSelectionMode()方法ListSelectionModel.MULTIPLE_INTERVAL_SELECTION,如圖here,並檢查由getSelectedRows()返回的結果。

  • 添加的一列複選框,如圖here,並啓用刪除任何被選擇,只有當按鈕。

在所有情況下,

  • 視圖和模型行指數之間轉換,如所討論的herehere

  • 考慮支持撤銷使用List<Row>來緩存從模型中刪除但尚未從數據庫中刪除的行。