Pegar Data na JTable com evento MouseClicked

3 respostas
brulex

Pessoal to quebrando a cabeça aqui, sou iniciante em java e to com um probleminha relacionado ao Date.

no meu Bean e no meu banco de dados eu tenho o dia que esta como Date nos dois.
o que aconteceu é que no meu mousecliked eu nao consigo pegar a data da linha e coluna selecionadas

Este é o meu metodo para preencher a Jtable
public void preencher_jtable() {

        tblKM.getColumnModel().getColumn(0).setPreferredWidth(40);
        tblKM.getColumnModel().getColumn(1).setPreferredWidth(50);
        tblKM.getColumnModel().getColumn(2).setPreferredWidth(50);
        tblKM.getColumnModel().getColumn(3).setPreferredWidth(80);
        tblKM.getColumnModel().getColumn(4).setPreferredWidth(80);
        tblKM.getColumnModel().getColumn(5).setPreferredWidth(80);
        tblKM.getColumnModel().getColumn(6).setPreferredWidth(80);
        tblKM.getColumnModel().getColumn(7).setPreferredWidth(80);
       



        DefaultTableModel modelo = (DefaultTableModel) tblKM.getModel();
        modelo.setNumRows(0);

        try {
            
            sessao = fabrica.openSession();
            lista_km = sessao.createQuery(listar + ordenacao).list();
            tamanho_lista = lista_km.size();
            String dados = "";
            for (int i = 0; i < tamanho_lista; i++) {
                Quilometragem km = lista_km.get(i);
                
                modelo.addRow(new Object[]{km.getId(), km.getDia(),km.getMes(),
                            km.getManha(), km.getAlmoco(), km.getVolta_almoco(),
                            km.getTarde(), km.getTotal_km_dia()});
            
            }
            if (!lista_km.isEmpty()) {
                posicao_atual = 0;
                Quilometragem km = lista_km.get(0);           
                tfId.setText("" + km.getId());
                tfDia.setText(""+ km.getDia());
                jcMes.setSelectedItem(km.getMes());
                tfManha.setText("" + km.getAlmoco());
                tfSAlmoco.setText("" + km.getAlmoco());
                tfCAlmoco.setText("" + km.getVolta_almoco());
                tfAtarde.setText("" + km.getTarde());
                tblKM.setRowSelectionInterval(0, 0);
            }
        } catch (Exception erro) {
            JOptionPane.showMessageDialog(null, "Erro ao listar no Tabela " + erro);
        }
    //   sessao.createQuery("SUM(total_km_dia) FROM quilometragem GROUP BY mes");
      
       
    }
ate ai funciona legal vai no banco faz a pesquisa usando as variaveis listar + ordenação que contem o meu HQL

mais no evento mouseclicked eu não consigo pegar a data e jogar nos JFormattedTextField correspondente, so os outros campos.

Evento mouseClicked na JTable

private void tblKMMouseClicked(java.awt.event.MouseEvent evt) {                                   

        int linha = tblKM.getSelectedRow();
        posicao_atual = linha;
        Quilometragem km = new Quilometragem();
        
        km.setId(Integer.parseInt(tblKM.getValueAt(linha, 0).toString()));      
        km.setDia(tblKM.getValueAt(linha, 1).toString()); // aqui da erro!!  ele espera uma string, mais o meu Dia é um Date... porem não consegui converter
        km.setMes(tblKM.getValueAt(linha, 2).toString());
        km.setManha(Integer.parseInt(tblKM.getValueAt(linha, 3).toString()));
        km.setAlmoco(Integer.parseInt(tblKM.getValueAt(linha, 4).toString()));
        km.setVolta_almoco(Integer.parseInt(tblKM.getValueAt(linha, 5).toString()));
        km.setTarde(Integer.parseInt(tblKM.getValueAt(linha, 6).toString()));
        km.setTotal_km_dia(Integer.parseInt(tblKM.getValueAt(linha, 7).toString()));
        
        jcMes.setSelectedItem("" + km.getMes());
        tfId.setText("" + km.getId());
        tfDia.setText("" + km.getDia());
        tfManha.setText("" + km.getManha());
        tfSAlmoco.setText("" + km.getAlmoco());
        tfCAlmoco.setText("" + km.getVolta_almoco());
        tfAtarde.setText("" + km.getTarde());
        tfKMDia.setText("" + km.getTotal_km_dia()); 
    }
" eu só quero conseguir pegar a o campo Dia "que é do tipo Date" que esta na linha selecionada e na coluna de posição 1 e jogar pro JFormattedTextField "tfDia" acho que fazer uma conversão para string resolveria, porem eu nao consegui fazer da maneira correta ainda... por isso quero ajuda. Obrigado

3 Respostas

FabioNoth

Amigão, é um conçelho do amigo ViniGodoy moderador do Forum.
Recomendo, pois depois que comecei a utilizar melhorou muito o meu código. :smiley:

Segue"
@ViniGodoy

Ei… você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295

Espero que ajude

brulex

[b]lendo nesse momento.

Obrigado[/b]

ViniGodoy

Depois de aprender a mexer no TableModel, você simplesmente não precisará mais se preocupar com:

  • Conversões de datas ou tipos numéricos;
  • Saber em que colunas está cada campo;
  • Copiar dados dos seus objetos para dentro da tabela e vice versa.

Então, após entender os links, sua dúvida ficará obsoleta.

Criado 12 de abril de 2012
Ultima resposta 12 de abr. de 2012
Respostas 3
Participantes 3