繁体   English   中英

使用AbstractTableModel从JTable中删除行

[英]remove rows from JTable with AbstractTableModel

我想使用一个按钮从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具有大多数实现的方法。 因此,除非有真正需要去AbstractTableModel其他棍子DefaultTableModel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM