Capturar data de um JCalendar

9 respostas
jsergio.c

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

9 Respostas

The_Punisher

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

jsergio.c

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!

The_Punisher

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?

jsergio.c

Isso mesmo,

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

The_Punisher

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

The_Punisher

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

jsergio.c

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.
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);      
}

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

The_Punisher

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

M

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

Criado 16 de novembro de 2009
Ultima resposta 15 de dez. de 2012
Respostas 9
Participantes 3