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.
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.
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?
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?
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
}
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.