[RESOLVIDO]JTable desaparece quando lincado ao DefaultTableModel

Bom dia pessoal,

fiz uma aplicação simples usando Swing, e ao realizar uma consulta ao banco que traz registros (já verifiquei), o JTable simplesmente desaparece quando lincado ao DefaultTableModel. Segue abaixo o código:

// bloco try

    DaoFuncionario objDaoFuncionario = new DaoFuncionario();
    
    // Monta critérios de pesquisa
    objDaoFuncionario.setPesquisa(jComboBox1.getSelectedIndex());
    objDaoFuncionario.setCondicao(jComboBox2.getSelectedIndex());
    objDaoFuncionario.setConteudo(jTextField1.getText());
    
    DefaultTableModel modelo = new DefaultTableModel();
    
    Vector vetor = new Vector();
    vetor.addAll(objDaoFuncionario.procuraFuncionario(""));
    modelo.addRow(vetor);
    jTable1.setModel(modelo);
// bloco try

Obs: como as colunas já foram definidas em tempo de design, não precisei fazer ‘addColumn’.

Alguém já passou por isto?

Como você instanciou DefaultTableModel com o construtor padrão sem parâmetros na linha 10, seu novo TableModel não tem colunas. Você precisará adicionar as colunas de que precisa via addColumn(). Lembre-se de que, ao usar JTable.setModel(), você está SOBREPONDO o TableModel que definiu em tempo de design, e portanto as colunas configuradas em tempo de design serão perdidas.

A propósito, não use DefaultTableModel. Uma boa alternativa é o ObjectTableModel criado pelo Marky.

Entendi,

mudei o código conforme abaixo:

    Vector vetorDados = new Vector();
    vetorDados.addAll(objDaoFuncionario.procuraFuncionario(""));
    
    ArrayList cols = new ArrayList();
    cols.add("Código");
    cols.add("Nome");
    cols.add("CPF");
    cols.add("RG");
    cols.add("MASP");
    cols.add("Nascimento");
    cols.add("Status");
    Vector vetColunas = new Vector(cols);

    DefaultTableModel modelo = new DefaultTableModel(vetColunas, 0);
  
    modelo.addRow(vetorDados);
    
    jTable1.setModel(modelo);

Só que agora está aparecendo o endereço do objeto da minha classe de consulta funcionários ‘gestaorhcf.ConsultaFuncionario@148662’ na primeira célula. E mais nada ???

Para preencher o modelo, faça assim:

for (Object obj : vetorDados) { Funcionario func = (Funcionario) obj; Object[] array = new Object[7]; array[0] = func.getCodigo(); /* ... */ array[6] = func.getStatus(); modelo.addRow(array); }

Valeu d+

Thanks

Bom dia!

Estou com um problema criei uma classe que monta a minha tabela segue abaixo o codigo:

import java.awt.Dimension;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;

public class Tabela extends AbstractTableModel{

/**
 * 
 */
private static final long serialVersionUID = 1L;

public JScrollPane Rtabela(){

	DefaultTableModel modelo = new DefaultTableModel();

	JTable tabela = new JTable(modelo); 
	JScrollPane scrollPane = new JScrollPane(); 
	try{
		modelo.addColumn("LINHA");   
		modelo.addColumn("REG.LAYOUT");   
		modelo.addColumn("DESC. DO CAMP.");   
		modelo.addColumn("POS. INICIAL");   
		modelo.addColumn("POS. FINAL");
		modelo.addColumn("TIPO PADRÃO");
		modelo.addColumn("ERRO ENCONTRADO");

		tabela.setPreferredScrollableViewportSize(new Dimension(20, 400));  

		tabela.getColumnModel().getColumn(0).setPreferredWidth(20);   
		tabela.getColumnModel().getColumn(1).setPreferredWidth(100);   
		tabela.getColumnModel().getColumn(2).setPreferredWidth(100);   
		tabela.getColumnModel().getColumn(3).setPreferredWidth(10);
		tabela.getColumnModel().getColumn(4).setPreferredWidth(10); 
		tabela.getColumnModel().getColumn(5).setPreferredWidth(50);
		tabela.getColumnModel().getColumn(6).setPreferredWidth(200);


		scrollPane.add(tabela);
		scrollPane.setLocation(10,95);   
		scrollPane.setSize(720,300);

	}catch(Exception e ){
		JOptionPane.showMessageDialog(null, "Erro encontrado : " + e);
	}

	return scrollPane;


}

@Override
public int getRowCount() {
	// TODO Auto-generated method stub
	return 0;
}

@Override
public int getColumnCount() {
	// TODO Auto-generated method stub
	return 0;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
	// TODO Auto-generated method stub
	return null;
}

}

e estâncio na classe onde monto meu Frame
painel.add(tabela.Rtabela());

so quer os cabeçalhos não aparecem

grato no aguardo