Galera, eu estou a 3 dias vendo vídeos e pdfs, tentei um monte de solução e até agora não consegui fazer a bendita jtable carregar a lista de objetos!! hahahah
Vamos lá, espero que possam me ajudar!!!
Estou usando o WindowBuilder do Eclipse e BD MySql
Primeiramente eu criei uma classe que faz conexão com o BD MySQL e me retorna uma lista com os objetos:
public class OcorrenciaDAO {
public ArrayList<Ocorrencia> consultarOcorrencia (){
ArrayList <Ocorrencia>lista = new ArrayList<Ocorrencia>();
try {
Connection conn = ConectaMySql.obtemConexao();
String queryInsert = "SELECT * FROM ocorrencias";
PreparedStatement ps = conn.prepareStatement(queryInsert);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Ocorrencia ocor = new Ocorrencia();
ocor.setId(rs.getInt(1));
ocor.setId_atendente(rs.getInt(2));
ocor.setModelo(rs.getString(3));
ocor.setPlaca(rs.getString(4));
lista.add(ocor);
}
} catch (Exception e) {
e.printStackTrace();
}
return lista;
}
}
Ok, até ae sem nenhum problema, já testei pelo SOAPui e realmente a classe retorna uma lista de objetos.
Baseado em diversos tópicos do fórum e guias, eu criei uma classe para manipular minha jTable:
public class ModeloTabela extends AbstractTableModel{
private ArrayList linhas = null;
private String[] colunas = null;
public ModeloTabela (ArrayList lin, String[] col){
setLinhas(lin);
setColunas(col);
}
public ArrayList getLinhas(){
return linhas;
}
public void setLinhas(ArrayList dados){
linhas = dados;
}
public String[] getColunas(){
return colunas;
}
public void setColunas(String[] nomes){
colunas = nomes;
}
public int getColumnCount(){
return colunas.length;
}
public int getRowCount(){
return linhas.size();
}
public String getColumnName(int numCol){
return colunas[numCol];
}
public Object getValueAt(int numLin, int numCol){
Object[] linha = (Object[])getLinhas().get(numLin);
return linha[numCol];
}
}
Bom, ai eu já não consigo testar, então não sei se esta correta.
Por fim, dentro do meu formulário, eu criei um método que deveria:
1) criar a lista de objetos
2) criar a jTable
public void preencherTabela(){
//Array para receber a lista de objetos e array para receber os nomes do cabeçalho da jTable
ArrayList<Ocorrencia> dados = new ArrayList<Ocorrencia>();
String [] Colunas = new String[]{"ID","Atendente", "Modelo","PLACA"};
//dados recebe a lista de objetos
OcorrenciaDAO ocDAO = new OcorrenciaDAO();
dados = ocDAO.consultarOcorrencia();
//a partir daqui eu não sei explicar direito que ocorre
ModeloTabela modelo = new ModeloTabela(dados, Colunas);
tableOcorrencia = new JTable();
tableOcorrencia.setBounds(10, 164, 530, 199);
tableOcorrencia.setModel(modelo);
tableOcorrencia.getColumnModel().getColumn(0).setPreferredWidth(80);
tableOcorrencia.getColumnModel().getColumn(0).setResizable(false);
tableOcorrencia.getColumnModel().getColumn(1).setPreferredWidth(180);
tableOcorrencia.getColumnModel().getColumn(1).setResizable(false);
tableOcorrencia.getColumnModel().getColumn(2).setPreferredWidth(180);
tableOcorrencia.getColumnModel().getColumn(2).setResizable(false);
tableOcorrencia.getColumnModel().getColumn(3).setPreferredWidth(180);
tableOcorrencia.getColumnModel().getColumn(3).setResizable(false);
tableOcorrencia.getTableHeader().setReorderingAllowed(false);
tableOcorrencia.setAutoResizeMode(tableOcorrencia.AUTO_RESIZE_OFF);
tableOcorrencia.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
contentPane.add(tableOcorrencia);
}
E por fim, chamei esse metodo no evento windows open do meu form:
Pergunta
Leandro - pL
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.