使用AbstractTableModel从JTable中删除行

我想使用按钮从AbstractTableModel删除JTable中的选定行。

下面的代码适用于DefaultTableModel:

 ... MyTableModel mtb; ... private String[].... private Object[][]... ... JTable table = new JTable(mtb) JButton delete; ... public void actionPerformed(ActionEvent e) { if(e.getSource().equals(delete)) { if(table.getSelectedRow()<0) { JOptionPane.showMessageDialog(this,"Select row"); } else { mtb.removeRow(table.getSelectedRow()); } } } 

但它不适用于AbstractTablemodel

我的代码有点乱,所以这里是来自oracle页面的java示例 ,可以使用:

谢谢!

对于AbstractTableModel ,您必须根据模型的内部数据结构实现自己的removeRow() ,但是您可以研究DefaultTableModel的来源,作为触发哪些事件的指南。 例如,

 public void removeRow(int row) { // remove a row from your internal data structure fireTableRowsDeleted(row, row); } 

只要表模型发生更改, DefaultTableModel本身就会调用fireXX方法。 但是如果我们使用AbstractTableModel那么我们必须显式调用fireXX方法。 因此,当表中有变化时,只需调用相关的fireXX方法即可。

对于,

使用fireTableRowsInserted向表中插入新行

删除 (在您的情况下)使用fireTableRowsDeleted

更新使用fireTableRowsUpdated

注意: DefaultTableModel具有大多数实现的方法。 因此,除非有真正的需要,否则请使用DefaultTableModel