JTextField e Date

2 respostas
deamdornelles

Bom dia amigos

Eu tenho um exercício para fazer e estou encontrando algumas dificuldades. É o seguinte, a pessoa vai digitar uma data em um JTextField e eu tenho que mostrar qual é o dia do ano em um JLabel. Por exemplo, eu digito 31/05/2012 e no JLabel aparece: Este é o dia 152 do ano.

Aqui está o código:

import java.awt.*;
import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.DateFormat;

public class exercicio04 extends JFrame {
	JTextField data;
	JTextArea numero;
	String texto;
	Calendar calendario;
	public exercicio04 () {
		setTitle ("Exercício 04");
		setSize (300, 300);
		setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		setVisible (true);
		setLayout (new GridLayout (2, 1));
		data = new JTextField (10);
		numero = new JTextArea (10, 10);
		add (data);
		add (numero);
		data.addKeyListener (new KeyAdapter () {
			public void keyReleased (KeyEvent ev) {
				texto = data.getText (); //Pego a data
				Date date = java.sql.Date.valueOf (texto); //Converto de String para Date
				calendario.setTime (date); //Passo para um Calendar
				calendario.get (Calendar.DAY_OF_YEAR); //Descubro o dia do ano
				texto = String.valueOf (calendario); //E converto novamente para String
				numero.insert (texto, 0);
			}
		});
	}
	public static void main (String args []) {
		exercicio04 janela = new exercicio04 ();
	}
}

Não está funcionando, alguém sabe me informar onde está o problema ou de que jeito eu posso fazer? Porque pelo que eu entendi, eu teria que pegar a data depois que o usuário digitasse ela inteira, mas do jeito que eu estou fazendo o programa está pegando a data sempre que eu aperto alguma tecla do teclado. Certo?

2 Respostas

R_chieck

Ola

estas cometendo um pequeno erro, mais um descuido.
o seu código para pegar o dia do ano está certo:

calendario.get(Calendar.DAY_OF_YEAR);

porem deve prestar atenção no fato de que este código lhe retornará o número do dia do ano. e lhe pergunto:
Oque está fazendo com o valor que lhe é retornado?
voce o está buscando mas não está usando, nem sequer está armazenando em algum lugar…
tente algo como:

String diaAno = calendario.get(Calendar.DAY_OF_YEAR);
data.setText(diaAno);
deamdornelles

Obrigado R$chieck, você tem razão. Vou alterar aqui e tentar novamente.

Criado 31 de maio de 2012
Ultima resposta 31 de mai. de 2012
Respostas 2
Participantes 2