Olá pessoal, programando uma JTable, depois de muitos dias sem, fiz um ModeloTabela para preencher minha JTable. O problema é que estou utilizando o getColumName() pra poder nomear minha colunas e passando para ele um Array de Strings… só que ao executar o programa ele está me retornando apenas A,B,C… etc… alguém imagina o que posso estar esquecendo ?? antes dava certo… To sem Net em casa e por isso tá difícil colar o código aqui do trampo, mas vou dar um jeito e trazer o Codigo aqui pra vocês darem uma olhada, mas se só a descrição alguém já souber o que estou esquecendo irei ficar agradecido.
É, só com o código mesmo.
Geralmente é erro do model.
rissato
nao entendi… os titulos das colunas estão aparecendo normalmente quando vc roda o sistema?
sem o codigo é dificil msm…
adriano_si
Fala pessoal... depois de algumas semanas longe cá estou eu de novo com Internet disponível... pois é... voltando ao problema... aqui está meu código...
// AUTOR: Adriano Ohana// DATA : 25/07/2008packagehouse.visao.modelo;importhouse.modelo.UsuarioVO;importjavax.swing.table.AbstractTableModel;importhouse.controle.interfaces.UsuarioFacade;importhouse.facadefactory.FacadeFactory;importhouse.util.SistemaException;importjava.util.Vector;publicclassModeloTabelaUsuarioextendsAbstractTableModel{privateVectortudo=newVector();privateVectorvalores=newVector();privateStringcolunas[]=newString[]{"Cod","Nome","Login"};UsuarioVOvo=newUsuarioVO();UsuarioFacadefacade=FacadeFactory.getUsuarioFacade();publicModeloTabelaUsuario(){try{tudo.addAll(facade.listar());}catch(SistemaExceptione){e.printStackTrace();}valores.addAll(tudo);}publicStringgetColumName(intarg0){returncolunas[arg0];}publicintgetRowCount(){returnvalores.size();}publicintgetColumnCount(){returncolunas.length;}// método que mostra os campos preenchidos na tabelapublicObjectgetValueAt(introwIndex,intcolumnIndex){UsuarioVOvoLoc=(UsuarioVO)valores.get(rowIndex);switch(columnIndex){case0:returnvoLoc.getIdusuario();case1:returnvoLoc.getNome();case2:returnvoLoc.getLogin();default:returnnull;}}publicvoidexcluirUsuario(introwIndex)throwsSistemaException{UsuarioVOvoLoc=(UsuarioVO)valores.get(rowIndex);facade.excluir(voLoc);}publicUsuarioVOretornaSelecionado(introwIndex)throwsSistemaException{UsuarioVOvoLoc=(UsuarioVO)valores.get(rowIndex);returnvoLoc;}}
Essa criancinha aí que não mostra o Nome da coluna... o que estou esquecendo ???
Segue uma figura para mostrar o que ocorre...
Att.
ViniGodoy
Oi, posta o código de onde vc cria a tabela também.
Outra coisa, prefira List/ArrayList ao Vector. O Vector não é recomendado desde o Java 1.2. Se quiser ver como usa o ArrayList, é só ver esse exemplo: http://www.guj.com.br/posts/list/74068.java#389435
Seu erro é o seguinte, o método getColumnName está escrito errado. Existe um n depois do m da palavra column.
Para evitar problemas desse tipo, sempre adicione a tag @Override antes dos métodos sobrescritos. Se você tivesse feito isso, o Java já teria avisado que não existe nenhum método getColumName na classe superior.
Isso é especialmente útil se vc renomear um método da classe base. Assim vc não corre o risco de esquecer de renomear também o método nas classes filhas, já que vai dar erro de compilação.
adriano_si
Valew Viny… funcionou perfeitamente…
Uma pergunta: o @Override é um recurso de que ?? da JVM ou da IDE ?? fiquei meio na dúvida de como funciona… outra, se existe esse recurso para métodos sobrescritos, pode haver para outras coisas também… devo procurar pelo que ??
Valew
ViniGodoy
O @Override é um recurso chamado Annotations, da própria linguagem Java.
No caso, quem verifica esse anotação é o próprio compilador. O erro é barrado antes sequer do .class ser gerado. Com o @Override, você está dizendo para o compilador “esse método esta sobrescrevendo outro.” O compilador então verifica se isso que vc disse é verdade, e reclama caso não seja.
Várias outras APIs possuem annotations. Ë o caso do JUnit, que permite que vc marque os métodos que serão usados como @Test. Ou do Hibernate, que permite que vc mapeie suas classes para o BD através de anotações especiais.