JDateChooser - Pegar data do JTable e setar no JDateChooser

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.

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?

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.

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?

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

Ninguem para ajudar ???

  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.

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

Ué, faz assim:

E depois pega assim:

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

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

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…

[quote=pilotoag]Uma maneira que deu certo parcialmente foi usando isso para setar o JDateChooser:

[/quote]

É 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…

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?

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.