Validar Data com swing

16 respostas
rocha

Olá pessoal alguém sabe como posso validar uma data em swing? Quero saber se uma data é valida ou não e mostrar uma msg para o usuário se não for

16 Respostas

velo

mesmo esquema do uppercase…

Cara, tem o JFormattedTextField…

Vc obriga o cara a digitar do teu jeito, eu imagino q deve ter um "APENAS UPPERCASE"
Um artigo…
http://www-106.ibm.com/developerworks/java/library/j-mer0625/

No forum deve ter coisa pra K ram ba!!!

VELO

rocha

Cara não é a mascara que eu quero, isso eu já consegui. Eu quero saber se uma data é válida por exemplo 01/13/2005 não é uma data válida assim como 30/02/2002 tb não entendeu o q quero?

velo

Faz um parse usando o SimpleDateFormat… se der exception eh pq num é valida.

VELO

rocha

Isso não funciona pois estou a data vem como long e o java entende 31/01/2005 como 01/02/2005

T

Você precisa setar setLenient(false) quando você quer usar DateFormat.parse(). Senão ele acha que 31 de fevereiro é 2 ou 3 de março.

plentz

import java.util.regex.*; ... Pattern p = Pattern.compile("^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$"); Matcher m = p.matcher("31/02/1985"); if (!m.find()) System.err.println("Data inválida."); ...

Crianças, não façam isso em casa.

E

:shock:
da pra explicar ae :?:
:shock:

E

:shock:
da pra explicar ae :?:
:shock:

plentz

Aquilo ali é uma Regular expression que valida datas no formato ‘dd/mm/yyyy’, como o caso do nosso amigo, aparentemente a data dele é na verdade uma String, eu crio uma Pattern e mando buscar na String da data. Se o padrão bater com a String passada, bingo!, é uma data válida. Mas com certeza existem maneiras menos dolorosas de fazer isso.

rocha

Valeu vou testar

agnm

tente isso.

setInputVerifier(new InputVerifier() {
         public boolean verify(JComponent input) {
            MData data = (MData) input;
            if (data.getText().equals("") || data.getText().equals("  /  /    ")) return true;
            else try {
               SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
               sdf.setLenient(false);
               sdf.parse(data.getText());
               return true;
            } catch (ParseException x) {
               return false;
            }
         }
      });
brlima

Uma procura bem rapida no forum achei esse topico aqui

:arrow: http://www.guj.com.br/posts/list/2143.java

Melhor que isso, só nascer sabendo…rssss

tflm

Mto boa a Regex do Plentz!
Funfou direitinho!

A propósito, fiz uma pra validar hora.
se alguém precisar tá ae:

Pattern.compile("((0[0-9])|(1[0-9])|(2[0-3])){1}:((0[0-9])|(1[0-9])|(2[0-9])|(3[0-9])|(4[0-9])|(5[0-9])){1}");

Abraços

renzonuccitelli

cara, o swingbean faz exatamente o que vc quer http://swingbean.sourceforge.net/. E faz isso colocando uma interface que auxilia muito a inserção de data e valoriza a interface. De uma olhada nos screenshots. Tenho um programa aqui que utiliza, vou ver se acho e posto uma imagem e posto aqui de novo.

renzonuccitelli

Da uma olhada: [URL=http://img291.imageshack.us/my.php?image=swingbeanci6.jpg][/URL][URL=http://g.imageshack.us/thpix.php][/URL]

tflm

Bem prático mesmo.
Mas já resolvi todas minhas validações com Regular Expressions.

Vlwz.
Abraços

Criado 28 de abril de 2005
Ultima resposta 14 de out. de 2008
Respostas 16
Participantes 9