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;
}