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

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()。

    public boolean deleteLine(int line){
        linhas.remove(line);
        return true;
    }

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


我不知道如何使它工作...因为我无法访问

我认为错误是构造函数是“填充”表的构造函数,我认为我必须对其进行更改并创建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;
    }

10-04 17:16