Java AbstractTableModel删除行不工作

Java AbstractTableModel删除行不工作,java,swing,jtable,tablemodel,Java,Swing,Jtable,Tablemodel,我有这个表模型,我以这种方式插入值调用: lista.setModel(new SimpleTableModel(dados, colunas)); lista是JTable 模型: import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table

我有这个表模型,我以这种方式插入值调用:

lista.setModel(new SimpleTableModel(dados, colunas));
lista是JTable

模型:

    import java.awt.event.MouseEvent;
import java.util.ArrayList;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;

public class SimpleTableModel extends AbstractTableModel{  

    private ArrayList linhas = null;  
    private String [] colunas = null;  
    public String[] getColunas() {return colunas;}  
    public ArrayList getLinhas() {return linhas;}  
    public void setColunas(String[] strings) {colunas = strings;}  
    public void setLinhas(ArrayList list) {linhas = list;}
    @Override
    /** 
     * Retorna o numero de colunas no modelo 
     * @see javax.swing.table.TableModel#getColumnCount() 
     */  
    public int getColumnCount() {return getColunas().length;}  

    /** 
     * Retorna o numero de linhas existentes no modelo 
     * @see javax.swing.table.TableModel#getRowCount() 
     */  
    public String getColumnName(int col){  
        return getColunas()[col];  
    }  

    public int getRowCount() {return getLinhas().size();}  

    /** 
     * Obtem o valor na linha e coluna 
     * @see javax.swing.table.TableModel#getValueAt(int, int) 
     */  
    public Object getValueAt(int rowIndex, int columnIndex) {  
        // Obtem a linha, que é uma String []  

        String [] linha = (String [])getLinhas().get(rowIndex); 

        // Retorna o objeto que esta na coluna  
        return linha[columnIndex];  
    }  
//added this to try...
    public boolean deleteLine(int line){   
        linhas.remove(line);   
        return true;   
    }   

    public boolean deleteAll(){   
        linhas.clear();   
        return true;   
    }   


public SimpleTableModel(ArrayList dados, String[] colunas){  
    setLinhas(dados);  
    setColunas(colunas);  
}  

}
但问题是,我不能调用deleteLine()

我不知道如何让这个工作。。。因为我无法访问

我认为错误在于构造函数是“填充”表的构造函数,我认为我必须更改它并创建insertLine()


但不确定问题在于您没有从模型中触发任何类型的事件,这些事件会告诉表模型已更改

从模型内的基础数据结构中删除行后,请尝试使用


请看一看,尤其是问题在于您没有从模型中触发任何类型的事件,这些事件会告诉表模型已更改

从模型内的基础数据结构中删除行后,请尝试使用


看一看,尤其是可能是
deleteLine()
是属于
simpleTableModel
的方法,但您没有在框架上创建该
simpleTableModel
的任何实例。你在直接做什么

lista.setModel(new SimpleTableModel(dados, colunas));
尝试在您的框架中执行以下操作:

SimpleTableModel modelo = new SimpleTableModel(dados, colunas);
lista.setModel(modelo);
modelo.deleteX(line);
在您的模型中,如下所示:

public boolean deleteX(int line) throws DAOExcepcion{ //could be void because always returns true
        this.removeRow(line);
        this.fireTableRowsDeleted(line, line);
        return true;
    }

可能是
deleteLine()
是属于
simpleTableModel
的方法,但您没有在框架上创建该
simpleTableModel
的任何实例。你在直接做什么

lista.setModel(new SimpleTableModel(dados, colunas));
尝试在您的框架中执行以下操作:

SimpleTableModel modelo = new SimpleTableModel(dados, colunas);
lista.setModel(modelo);
modelo.deleteX(line);
在您的模型中,如下所示:

public boolean deleteX(int line) throws DAOExcepcion{ //could be void because always returns true
        this.removeRow(line);
        this.fireTableRowsDeleted(line, line);
        return true;
    }