2014-02-15 68 views
0

删除JTable的自动刷新不工作的项目...刷新JTable中后删除一个项目从数据库

这里是代码

@Override 
    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == btnEdit) { 


     } else if (e.getSource() == btnDelete) { 

      String str = JOptionPane.showInputDialog(null, 
        "Enter The Reason : ", "", 1); 


      if (str != null) { 
       Book updatebook = new Book(); 
       updatebook.setName(book.getName());       
       updatebook.setAuthor(book.getAuthor()); 
       updatebook.setPublisher(book.getPublisher()); 
       updatebook.setDelete(true); 
       ServiceFactory.getBookServiceImpl().updateBook(updatebook); 

       JOptionPane.showMessageDialog(null, "You entered the Reason : "+ str, "", 1); 

     **Refresh code** 

       listPanel.removeAll(); 
       listPanel.repaint(); 
       listPanel.revalidate(); 
       getBooks(); 
       getListBookPanel(); 
       booktable.repaint(); 
       booktable.revalidate(); 


      } else 
       JOptionPane.showMessageDialog(null, 
         "You pressed cancel button.", "", 1); 

     } 
    } 

getBooks()函数

public JTable getBooks() { 
    booktable = new JTable(); 

    String[] colName = { "Name", "Author ", 
      "Publisher" }; 
    List<Book> books = ServiceFactory.getBookServiceImpl().findAllBook(); 
    data = new Object[books.size()][100000]; 

    for (Book book : books) { 

     data[i][0] = book.getName(); 
     data[i][1] = book.getAuthor(); 
     data[i][2] = book.getPublisher(); 
     i++; 
    } 
DefaultTableModel dtm = new DefaultTableModel(data, colName); 
    booktable = new JTable(); 
    booktable.setModel(dtm); 

    dtm.fireTableDataChanged(); 
    booktable.setCellSelectionEnabled(true); 
    booktable.addMouseListener(new MouseAdapter() { 
     public void mouseClicked(MouseEvent e) { 

      int row = booktable.getSelectedRow(); 
      CallNo = (booktable.getValueAt(row, 0).toString()); 

     } 
    }); 

    return booktable; 

} 

错误

“AWT-EventQueue的 - 0” java.lang.ArrayIndexOutOfBoundsException:2

我不知道为什么,如果u知道这件事,请在这里分享这个错误发生..

+0

您是否尝试删除整个表格并创建另一个表格然后将其添加回来? –

+0

你究竟想要移除什么?只是一个单元格,还是一排? –

+0

@peeskillet我试图从表格中删除一个项目,表格删除删除项目... –

回答

2

你尝试的方式删除数据似乎变化不大效率,只是不正确。它看起来像你想要做的与你的代码是创建一个完整的其他表并将其替换为一个新的。不要这样做。只需更新TableModel。您可以使用其方法

只要使用这种方法,就会自动从表格中删除一行。所以,你可以做这样的事情,在某个地方的监听

DefaultTableModel model = (DefaultTableModel)bookTable.getModel(); 
int row = ... 
model.removeRow(row); 

所有你的代码,你必须**Refresh code**看起来完全没有必要。

查看DefualtTableModel了解更多方法,例如添加行等。

+1

thanqs alot ..它真的工作... –

相关问题