Tenho uma dúvida em relação aos parâmetros passados ao método fireTableRowsInserted(int firstRow, int lastRow), parâmetros estes de índices inteiros inclusivos.
Em todos os exemplo que vi na implementação de um TableModel, no método para se adicionar uma List à List de dados já existentes, é passado no parâmetro de “lastRow” o índice atual, ou, a soma do índice anterior ao tamanho da list à ser adicionada, algo como:
public void addListBeans(List bean) {
int index = getRowCount();
listLinhas.addAll(bean);
fireTableRowsInserted(index, getRowCount());
}
public void addListBeans(List bean) {
int index = getRowCount();
listLinhas.addAll(bean);
fireTableRowsInserted(index, index + bean.size());
}
Os exemplos que vi aqui no fórum estão sempre assim, porém o índice não começa no zero? Então não deveria ser feita a subtração de 1 no valor passado em “lastRow”? E se utilizado desta forma, caso a List passada por algum motivo esteja vazia seria necessário um IF antes de invocar o método? Algo como:
public void addListBeans(List bean) {
int index = getRowCount();
listLinhas.addAll(bean);
if (getRowCount() > 0)
fireTableRowsInserted(index, getRowCount() - 1);
// Se a List veio vazia nem precisa chamar o método
}
Utilizando o código sem a subtração do índice não gera nenhuma Exception, mesmo colocando um valor qualquer muito superior ao índice real em “lastRow”, porém ao adicionar um Sorter na JTable, o fireTableRowsInserted gera um IndexOutOfBoundsException.
Então qual seria a forma correta de implementação?
Obrigado pela atenção!
