JDateChooser - Pegar data do JTable e setar no JDateChooser

14 respostas
P

Ola pessoal, ja faz um par de dias que venho pesquisando na internet e nada de achar uma solução, sou novato no java e to fazendo uma aplicação para aprender mais, e ai me deparei com a seguinte situação: tenho um JTable com dados de um MYSQL, o item em questão é a data, eu clico em uma linha do JTable e ai eu seto campos JComboBox, JTextField mas o bemdito do JDateChooser não consigo setar com a data do JTable, a data no JTable esta neste formato(dd/MM/yy HH:mm) alguem poderia me dar uma luz de preferencia com um exemplo que fica mais elucidativo, desde ja agradeço a atenção.

14 Respostas

V

Para converter um formato String em uma data, use o SimpleDateFormater:

SimpleDataFormatter sdf = new SimpleDataFormatter("dd/MM/yy HH:mm"); Date dte = sdf.parse(txtData);

Depois, use o método setDate() do JDateChooser.

Agora, você deveria estar pegando os dados do seu model da tabela, já no formato de data. Por acaso você fez a mega-ultra-cagada-pog de usar o DefaultTableModel?

P

Meu caro Vini, agradeço a sua colaboração, sei que vc é um cara entendido, a data ta vindo ja formatada(eu comprovei largando num Jlabel 16/06/2010 10:00) ta bonitinha só não consigo setar o tal do JDateChooser eu ja tinha usado o setDate cfe abaixo mas não seta, o pq não sei, executa tudo certinho não da erro algum mas tbm não seta o JDateChooser.

V

O SimpleDateFormat não serve só para formatar a data na hora de exibir, mas para o processo inverso: transformar uma string num java.util.Date. Eu pensei que sua data era um String, já que você mostrou o formato dela.

Se aquele seu cast está funcionando, então e porque ela já vem no formato java.util.Date.

Você pode postar o código completo do botão onde você tenta setar o JFileChooser? E você está usando o DefaultTableModel ou não, afinal?

P

Pego do banco de dados com esse comando sql:

ai eu preencho na tabela assim:

.... conHistorico.resultset.getString("nova_data"), ...

E com um evento MouseClicked…

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { recebeCodigoTabela(); }

eu chamo o metodo:

public void recebeCodigoTabela(){ tf_historico_id.setText((String) jTable1.getValueAt(jTable1.getSelectedRow(),0)); jDateHistorico.setDate((java.util.Date) jTable1.getValueAt(jTable1.getSelectedRow(),1)); tf_operacao_id.setText((String) jTable1.getValueAt(jTable1.getSelectedRow(),2)); .... atualizacboperacao(); atualizacbpapel(); }

Quanto a JTable, to usando sim o DefaultTableModel, mas eu sou novato, da um desconto ai… hehehe … abraço

P

Ninguem para ajudar ???

V
  1. Se seu campo é data, por que você pega ele como String do banco?
  2. Use um TableModel próprio. Aí coisas como essa serão sopinha no mel, brincadeira de criança.
P

Meu amigo, tu diz la no select do mysql que tem que mudar, ou no getString da tabela? como falei sou novato, e foi assim que aprendi na escola da vida(google), poderia me mostrar o modo correto de fazer, como que eu pego ele como data? Agradeço a atenção. Ps: vou fazer a minha propria tabela, mas tenho que dar mais uma estudada, ainda é complicado para um novato pelo que eu tive vendo por ai. Abraço

V

Ué, faz assim:

E depois pega assim:

P

não da certo, valeu, obrigado pela atenção… vou partir para outra solução, refazer a tabela… t+ abraço

V

Como assim não dá certo?
Deu algum erro?

P

Ok, vamos la entaum:

Uma maneira que deu certo parcialmente foi usando isso para setar o JDateChooser:

mostra belezinha a data e hora que ta no JTable no JDateChooser, mas na hora de gravar ele puxa essa data: 1970-01-01 10:55:30 não sei pq essa data de 1970?

ABraço.
PS. cara, vc não dorme ? 4 da manha…

V

pilotoag:
Uma maneira que deu certo parcialmente foi usando isso para setar o JDateChooser:

É o problema que existe em misturar Strings com Dates. Por isso é bom sempre trabalhar com Dates, e deixar para transforma-las em String unica e exclusivamente para exibi-las. O 1970 acontece pq todas as datas são, na verdade, o número de milissegundos transcorridos desde 1/1/1970. Provavelmente o seu parse não setou o ano.

Deixe uma Data dentro de sua tabela e use o método setDate() para definir a data no seu JDateChooser. O melhor mesmo é definir corretamente o seu TableModel para não ter que usar o getValueAt diretamente.

Na verdade, eu havia acordado há pouco mais de meia hora…

E

Olá estou com um problema parecido, só que eu salvo no banco como string já formatada, e preciso fazer um filtro por data, como devo fazer?

V

Vai ter que usar funções do banco que convertam. Isso é pouco eficiente. E não permite políticas melhores de banco, como indexação. E isso complica MUITO a internacionalização do software.

Se possível, faça do jeito certo. Salve o tipo Date no banco e formate na sua camada de apresentação.

Criado 18 de junho de 2010
Ultima resposta 1 de jul. de 2014
Respostas 14
Participantes 3