我有这个表模型,并且我插入以这种方式调用的值:
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;
}