• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

KiNgPiTo

Adicionar Row num Abstract Table Model

7 mensagens neste tópico

Boas,

Estou a usar o netbeans e a gerar uma daquelas Tabelas que ligam á BD... O problema é que já está em Abstract Tabel Model e se mudar para Default para ter o tabela.addrow, esta apaga as colunas e as linhas que já lá estavam... A pergunta é como adicionar então uma linha numa tabela com Abstract Table Model ou conseguir mudar a que tenho para Default Table Model sem perder nada do que é inicializado...

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A classe AbstractTabelModel é uma classe abstracta que não contém os métodos que queres, mesmo que te pareça que a tabela está a usar essa classe, na verdade está a usar uma qualquer implementação dessa classe. Já que sendo abstracta a classe não é, sequer, possível de instanciar.

Verifica no código qual é a classe que está a ser usada e vê se essa classe tem os métodos que precisas, se não me engano não terá, dado que se está a ser relacionada com uma tabela, então os dados têm de vir de essa tabela ou ser dados novos, que serão introduzidos na tabela, mas não custa nada confirmar.

Mudar para outra tipo de modelo não será muito boa escolha, isto se queres manter a ligação à BD, porque os modelos comuns não têm ligações a bases de dados. Podes fazer tu um modelo, mas terás de implementar tudo o que o NetBeans IDE faz por ti, que não  sendo complicado é capaz de ser ainda muito código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, mas se eu fizer tabela.getmodel(). não existe a possibilidade de um addRow() daí eu não saber mesmo que class usar, visto não ter mais nenhuma...

existe no entanto a setValueAt(linha,coluna), mas esta não adiciona uma nova apenas dá para editar uma existente... Se eu conseguisse inserir uma linha em branco, depois utilizava o setvalueat para a editar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O método getModel deve devolver um objecto do tipo AbstractTabelModel e não do tipo que está realmente instanciado.

Se expandires o código criado pelo editor gráfico podes ver qual é a instância que está a ser criada, depois é só usares o getModel e fazer um cast. Não tenho a certeza como está a ser criado o modelo das tabelas que usam a Swing Application Framework, e até todas as tabelas que criei usavam modelos ou renderers feitos por mim, por isso só testando.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O pior é que o getModel() está a devolver algo do tipo BindingTableModel... Tentei:

DefaultTableModel modelo = (DefaultTableModel)jTable1.getModel();

e nada... diz isto:

java.lang.ClassCastException: org.jdesktop.swingbinding.JTableBinding$BindingTableModel cannot be cast to javax.swing.table.DefaultTableModel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado na mesma, mas resolvi criar uma Tabela com o DefaultTableModel e criar um método de inicialização para pôr os dados da BD todos lá...

Deu algum trabalho, mas para adicionar, eliminar, actualizar é bastante mais fácil

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para isso devias ter criado o teu próprio modelo, que seria mais simples e o resultado era o mesmo, conseguires adicionar elementos :D, podias simplesmente estender a DefaultTableModel e redefinir os métodos que precisas ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora