JTable não atualiza nome da coluna

3 respostas
henriquedamota

Boa noite galera!

To com um probleminha aqui…

Seguinte: Quando faço um select numa tabela1, blz os dados vem certinhos juntamente com os nomes das colunas. Tudo isso feito dinamicamente.

Porém, quando faço um outro select em outra tabela2, os dados vem certos… mas o nomes das colunas não, ficando os nomes das colunas do primeiro select.

Abaixo o codigo do botão que executa isso.

public void actionPerformed(java.awt.event.ActionEvent e) {
					
					if((txtQuery != null) && (!"".equals(txtQuery.getText().trim()))){
						ResultSet results = null;
						results = conector.executaConsulta(txtQuery.getText());
						
						try {					
							DefaultTableModel aModel = null; 
							aModel = (DefaultTableModel) tblResultado.getModel();
							aModel.setNumRows(0);  
							
							ResultSetMetaData rsmd; 
							rsmd = results.getMetaData();
							
							int colNo = rsmd.getColumnCount();
							
							for(int i=0;i<colNo;i++){
								aModel.addColumn(rsmd.getColumnName(i+1));
							
							}
		
							while(results.next()){
								Object[] objects = new Object[colNo];
								
								for(int i=0;i<colNo;i++){
									objects[i]=results.getObject(i+1);
								}
								aModel.addRow(objects);
							}
							tblResultado.setModel(aModel);
						} catch (SQLException e1) {
							e1.printStackTrace();
						}
						
						
						
					}else{
						JOptionPane.showMessageDialog(null,"Digite a query a ser executada.","",
			                    JOptionPane.WARNING_MESSAGE);
					}
					
				}
			});

Se alguem puder ajudar, fica meu muito obrigado!!!

Vlw!

3 Respostas

Kaio_Max_Santos

Falta vc atualizar a tabela: fireTableDataChange(); :lol:
Da uma olhada aqui: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#fire

henriquedamota

valeu manooo !

mas eu consegui fazendo isso aqui:

aModel.setColumnCount(0);

Obrigado pela ajuda!

ViniGodoy

Muito importante!!!

Não use o DefaultTableModel. Ele torna o seu código mais complexo, mais sujeito a erros, mais difícil de manter, além de ocupar mais memória.

No lugar, crie um TableModel próprio.

Não deixe de ler esses ótimos artigos sobre o assunto:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472

E de conferir esse exemplo:
http://www.guj.com.br/posts/list/98452.java#530523

E, depois de entender tudo, ver essa classe para facilitar o trabalho:
http://www.guj.com.br/posts/list/100793.java

Garanto que você nunca mais vai querer usar o DefaultTableModel na sua vida.

Criado 8 de outubro de 2008
Ultima resposta 10 de out. de 2008
Respostas 3
Participantes 3