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);
}
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