[Dúvida] Formatação Data JformattedTextField

4 respostas
victorgilc

Olá Pessoal, boa tarde!

Tenho um JFormattedTextField, com a formatação ##/##/####, porém todavia, este objeto aceita datas como: 99/99/9999, o que não é mto legal e bem loko(imagina 99 dias num mês, durante 99 meses - seria praticamente uma vida infinita), não é mesmo?
Então pessoal, qual a maneita mais legal, simples, fácil, de boa, para validar essa increnca.

Thanks!

4 Respostas

L

A CLASSE

package util.Data;

import java.util.GregorianCalendar;



public class ValidaData {   

	public ValidaData() {   
	}   
	//public static void main(String[] s) {   
	// System.out.println(validaData("22/09/2010"));       
	// }   

	public static boolean validaData(String data) {  

		GregorianCalendar calendar =  new GregorianCalendar();     
		int dia = 0,mes = 0,ano = 0;   

		String diaStr = data.substring(0,2);   
		String mesStr = data.substring(3,5);   
		String anoStr = data.substring(6,10);   

		try {   
			dia = Integer.parseInt(diaStr);   
			mes = Integer.parseInt(mesStr);   
			ano = Integer.parseInt(anoStr);   
		} catch (Exception e) {   
			return false;   
		}   
		if (dia < 1 || mes < 1 || ano < 1)   
			return false;   
		else   
			if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)   
				if (dia <= 31)   
					return true;   
				else   
					return false;   
			else   
				if (mes == 4 || mes == 6 || mes == 9 || mes == 11)   
					if (dia <= 30)   
						return true;   
					else   
						return false;   
				else   
					if (mes == 2)   
						if (calendar.isLeapYear(ano))   
							if (dia <= 29)   
								return true;   
							else   
								return false;   
						else   
							if (dia <= 28)   
								return true;   
							else   
								return false;   
					else   
						if (mes > 12)   
							return false;   
		return true;   
	}   

}

ONDE CHAMA:

String data = txtDataNascimento.getText();
		if(!ValidaData.validaData(data)){

			txtDataNascimento.setBackground(Color.RED);

			new  Mensagem(this,"Aviso", "     Informe o Data correta !!!", Mensagem.MSG_BOTAO_OK, Mensagem.MSG_ICONE_INFORMACAO);

		}else{

			txtDataNascimento.setBackground(Color.WHITE);
victorgilc

humm…

victorgilc

Ok, coloquei no carret event e deu certo!

DavidUser

}else{

txtDataNascimento.setBackground(Color.WHITE);


Essa cor de fundo do campo de texto pode depois de ser alterada tem de usar um método revalidate ou repaint para funcionar?

Criado 22 de novembro de 2010
Ultima resposta 14 de dez. de 2010
Respostas 4
Participantes 3