Problema fireTableRowsInserted

ola pessoal, meu problema é o seeguinte tenho um modelo que extende abstractTableModel:

import java.util.Vector;
import javax.swing.table.AbstractTableModel;

public class modeloRegistroLocacao extends AbstractTableModel
{
	private static final long serialVersionUID = 1L;
	Vector modelVetorFichas;
	public modeloRegistroLocacao(Vector listaFichas)
	{
		modelVetorFichas=listaFichas;
	}
	public int getRowCount()
	{
		return modelVetorFichas.size();
	}
	public int getColumnCount()
	{
		return 6;
	}
	public Object getValueAt(int r,int c)
	{
		RegistroLocacao FichaAtual=(RegistroLocacao)modelVetorFichas.get(r);
		if(c==0)
			return FichaAtual.getCod_livro_locado();
		if(c==1)
			return FichaAtual.getLivro_locado();
		if(c==2)
			return FichaAtual.getAutor_livro_locado();
		//if(c==3)
			//return FichaAtual.getCod_usuario();
		//if(c==2)
			//return FichaAtual.getNome_usuario();
		//if(c==5)
			//return FichaAtual.getEndereco_usuario();
		//if(c==6)
			//return FichaAtual.getEndereco_numero_usuario();
		//if(c==7)
			//return FichaAtual.getTel_residencial_usuario();
		//if(c==8)
			//return FichaAtual.getTel_celular_usuario();
		if(c==3)
			return FichaAtual.getData_locacao();
		if(c==4)
			return FichaAtual.getData_program_devolucao();
		if(c==5)
			return FichaAtual.getData_efetiva_devolucao();
		
		return FichaAtual;
	}
	public void insertRow(Object[] data)
	{
		modelVetorFichas.add(data);
		//fireTableRowsInserted(0,modelVetorFichas.size());
	}
	public void removeRow(int row)
	{
		modelVetorFichas.remove(row);
		fireTableRowsDeleted(row,row);
	}
}

depois dentro de um form tenho um botao que chama o seguinte código para inserir uma linha. De fato ele insere na tabela, mas nao consigo atualizar visualmente.

try {
								inserelocacao.efetuaLocacao(insereEmprestimo);
								Object dados[]={codLivroLocado,livroLocado,autorLivroLocado,DataEmprestimo,DataDevolucao,codUsuario,nomeUsuario};
								
//tento modificar a tabela de livros com usuarios para exibir
//o novo livro adicionado a ela
								
modeloRegistroLocacao mostraNovoLivro=(modeloRegistroLocacao)jTablelivroscomusuario.getModel();
int numCol=(mostraNovoLivro.getRowCount());
System.out.println("a tabela tem "+numCol+" linhas");
mostraNovoLivro.insertRow(dados);
								jTablelivroscomusuario.getTableHeader().resizeAndRepaint();
								
								//JOptionPane.showMessageDialog(null,"Empréstimo Efetuado com Sucesso");
														} catch (Exception insercao) {
		insercao.printStackTrace();

}

o Problema é que quando clico no botao o java da erro:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object;
	at modeloRegistroLocacao.getValueAt(modeloRegistroLocacao.java:22)

esse erro corresponde a esta linha da primeira listagem:

RegistroLocacao FichaAtual=(RegistroLocacao)modelVetorFichas.get(r);

Eu sei que o erro acontece quando tento usar

fireTableRowsInserted(0, modelVetorFichas.size());

pra atualizar o modelo da tabela.

alguem sabe o que pode estar acontecendo? T+

Fiz uns testes aqui e vi onde estão alguns problemas.

Para que funcione, você no seu insertRow deve receber um objeto do mesmo tipo do que está no vetor, ou seja, RegistroLocacao. Como está aí, você está adicionando um vetor de objetos na última linha. E também você deve descomentar sua linha que diz que houve as mudanças nas linhas, mais ou menos assim:

public void insertRow(RegistroLocacao data) { vetor.add(data); fireTableRowsInserted(getRowCount(), getRowCount()); }

E claro, no botão lá você vai ter que mudar a sua chamada para este método.

flw

skank, entendi mais ou menos como é pra fazer, mas surgiu uma duvida de como faco pra criar um vetor do tipo RegistroLocacao,
Voce pode mandar um exemplo do que devo fazer no codigo?

T++

beleza

Vou colocar o método que fiz pra testar seu modelo de tabela aqui. É só adicionar no vetor instâncias do seu objeto mesmo:

protected Vector geraDados() { Vector v = new Vector(); Registro registro; for (int i = 0; i < 100; i++) { registro = new Registro(); registro.setId(i); registro.setNome("Nome " + i); v.add(registro); } return v; }

flw

valew cara, funcionou certinho aqui…
:smiley:

valew pela ajuda… T+