Capturar data de um JCalendar

Pessoal,

Estou precisando da ajuda de voces. Estou desenvolvendo um trabalho da faculdade e estou usando um calendário na minha aplicação. Não estou conseguindo capturar a data selecionada do calendário.

A ideia é quando eu dar um duplo click no JCalandar ele preencha um JTextField. Achei algumas explicações aqui no forum mas não me atende.

Fico no aguardo da ajuda de voces

e ai cara blz,

vc ja tentou utilizar o JDateChooser (uma caixa de texto com o calendário na lateral), faço essa sugestão pois tive de utilizar no meu tcc da facu e funcionou bacana.

caso vc utilize, o meio de pegar a data é algo assim:

JDateChooser calendario = new JDateChooser(new Date(), "dd/MM/yyyy"); //Aqui ele seta a data de hoje no formato dd/mm/aaaa
texto.setText(calendario.getDate()); //manda a data pra caixa de texto

Detalhe: a data que foi pega está no formato americano, mesmo vc deixando o formato como indicado na 1º linha de código, um meio de reverter isso é formatando-a:

SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
Date data = formato.parse(calendario.getDate());
texto.setText(data.toString());

Não cheguei a testar, mas é algo desse tipo, espero ter ajudado.

flw abrax

The_Punisher,

Me atende sim, o problema é que eu queria deixar ele amostra na tela veja o link abaixo.

http://img338.imageshack.us/img338/7680/agendal.png

Se puder me ajudar a resolver este problema!

e ai mano tranquilidade,

deixa ver se eu entendi… vc quer que o calendario fique fixo como na imagem e ao clicar ele pegue o resultado obtido?

Isso mesmo,

Quando eu der um duplo click ele carregue em um JTextField.

então cara,

Pra ser cincero não poderei te ajudar muito nessa, pois na parte de calendário o único que utilizei é aquele JDateChooser, esse é um outro tipo.

Mas eu fiz um teste com esse modelo no trampo usando netbeans e verifiquei com… botão direito em cima do componente => events => algo como: propertyChanged => propertyChanged.

ai ele abriu um método no estilo do action, key, etc.

mandei ele dar um JOptionPane e ele me mostra a data mas no formato americano, é que não estou mais no trampo, mas amanhã posso ver pra vc blz? ai posso te explicar melhor ok?

flw abrax

cara, acho que consegui achar a solução pro seu problema!!!

Fiz um exemplo no netbeans e saiu algo mais ou menos assim:

jCalendar1.setName("jCalendar1"); //AQUI SERIA A DECLARAÇÃO DO CALENDARIO

/*AQUI VC PODE ADD ESSE EVENTO*/
jCalendar1.addPropertyChangeListener(new java.beans.PropertyChangeListener() {//GERA A AÇÃO PRA TROCA DE PROPRIEDADE
       public void propertyChange(java.beans.PropertyChangeEvent evt) { //GERA EVENTO
            jCalendar1PropertyChange(evt); //CHAMA O MÉTODO CONTENDO A ROTINA
       }
});

essa seria a parte onde foi declarado o seu calendário, daí vc adiciona esse evento que chamará esse médoto:

private void jCalendar1PropertyChange(java.beans.PropertyChangeEvent evt) {
     SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); //DEFINE FORMATO DE DATA
     String data = formato.format(jCalendar1.getDate()); //CONVERTE PRA STRING
     JOptionPane.showMessageDialog(null, data); //EXIBE O CALENDARIO QUANDO CARREGADO E A CADA TROCA DE DATA, MÊS OU ANO

     /*AGORA TROCANDO ESSE JOptionPane ACIMA, VC PODE COLOCAR O JTextFeld COMO NO EXEMPLO ABAIXO: */
     campoTexto.setText(data);
}

Blz cara, testei aqui, o único problema é que não funciona em duplo clique, apenas um.

espero ter ajudado e se o meu exemplo ajudou ou não, posta aí blz?

flw abrax

The_Punisher,

Isso mesmo garoto, problema resolvido. Fiz como vc falou acrescentei o evento PropertyChange e deu certo. O duplo click era so para infeite mesmo, mas no click simples funciona e está ótimo.

Veja como ficou.

Para inicializar o campo JTextFeld em branco.

public CadastroTarefa() { initComponents(); txtData.setText(""); // Inicializa o campo data em Branco }

Evento para captura da data.

[code]private void jCalendar1PropertyChange(java.beans.PropertyChangeEvent evt) {

SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); //DEFINE FORMATO DE DATA  
String data = formato.format(jCalendar1.getDate()); //CONVERTE PRA STRING  
  txtData.setText(data);      

}[/code]

Ótima dica parabens pelo seu empenho em ajudar o próximo.

opa, valeu pelos parabéns e é isso mesmo… tamo junto e misturado!

gosto desse fórum porque quando tenho dúvidas o pessoal me ajuda muito.

só assim pra obtermos mais conhecimento.

flw abrax

Parabens pessoal, muito bom, estava com a mesma duvida, procurei muito sobre isso e só aqui encontrei como pegar a data pelo click, valeu!!