Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jotapeeh

Data

Mensagens Recomendadas

jotapeeh

boas pessoal

tenho uma dúvida: estou a construir um programa em que verifica numa JTextField contém data.

como a partir de uma JTextField verifica se no formato estiver em aaaa/mm/dd, valida as variáveis "d","m" e "a". Vou por algum código que é necessário:

public class Data {
...

private int ano;
   private int mes;
   private int dia;


public Data() {
       ano = 1;
       mes = 1;
       dia = 1;
 }

   public Data(int a, int m, int d) {
       setData(a,m,d);                              
   }

   public Data(Data d){                                    
       this(d.getAno(), d.getMes(), d.getDia());
   }

public String toAnoMesDiaString() {
       return String.format("%d/%02d/%02d",ano,mes,dia);
   }
}

public class DataGUI extends JFrame {
...

bt1.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               int a = 0,m = 0,d = 0;
               Data d1 = new Data(a,m,d);
               if (txt1.getText().equals(d1.toAnoMesDiaString())) {
                   ...
               }
               else{
                   JOptionPane.showMessageDialog(DataGUI.this, "Erro!!!","Data GUI",
                           JOptionPane.WARNING_MESSAGE);
               }
           }
});

Editado por pmg
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
eatg75

Usa a TAG para codigo, para fazer isso vais precisar recorer a expressoes regulares, procura no teu motor de buscas prefeirido por alguma biblioteca de expressoes regulares para Java, assim como exemplos de utilizacao ou documentacao.


Victarion seized the dusky woman by the wrist and pulled her to him.

Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see.

Moqorro's dark eyes seemed to shine.

Moqorro - I see dragons.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jotapeeh

Usa a TAG para codigo, para fazer isso vais precisar recorer a expressoes regulares, procura no teu motor de buscas prefeirido por alguma biblioteca de expressoes regulares para Java, assim como exemplos de utilizacao ou documentacao.

Exemplifica por favor

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
eatg75

Sinceramente nao conhece nenhuma biblioteca de expressoes regulares para Java (mas sei que ha imensas, tenho quase a certeza que existe um port do PCRE para Java), e nao vou procurar so para te dizer.

Basicamente o que tens de fazer e algo do genero :

// pseudo codigo
// (...)
// dateStr e a String que foste buscar a JTextField
public boolean validateDate(String dateStr)
{
// Suponhamos que encontraste uma biblioteca de regex
// espetacular por ai e o nome dela e CoolRegex ela
// suporta uma operacao chamado match() que ve se um
// determinado padrao se verefica numa string.

// suponhamos que a interface para criacao de um novo objecto seja o seguinte
// recebe a expressao se quer validar.
CoolRegex regex = new CoolRegex("20[0-9]{2}\/(0[1-9]|1[0-2])\/([0-2][0-9]|3[0-1])");
regex.compile(); // compila a expressa regular

return regex.match(dateStr); // faz o match e retorna um boolean que representa o sucesso do match
}

EDIT: a expressao regutar serve apenas de exemplo, atencao que ele nao valida correctamente o numero de dias dos meses!

Editado por eatg75

Victarion seized the dusky woman by the wrist and pulled her to him.

Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see.

Moqorro's dark eyes seemed to shine.

Moqorro - I see dragons.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jotapeeh

Sinceramente nao conhece nenhuma biblioteca de expressoes regulares para Java (mas sei que ha imensas, tenho quase a certeza que existe um port do PCRE para Java), e nao vou procurar so para te dizer.

Basicamente o que tens de fazer e algo do genero :

// pseudo codigo
// (...)
// dateStr e a String que foste buscar a JTextField
public boolean validateDate(String dateStr)
{
// Suponhamos que encontraste uma biblioteca de regex
// espetacular por ai e o nome dela e CoolRegex ela
// suporta uma operacao chamado match() que ve se um
// determinado padrao se verefica numa string.

// suponhamos que a interface para criacao de um novo objecto seja o seguinte
// recebe a expressao se quer validar.
CoolRegex regex = new CoolRegex("20[0-9]{2}\/(0[1-9]|1[0-2])\/([0-2][0-9]|3[0-1])");
regex.compile(); // compila a expressa regular

return regex.match(dateStr); // faz o match e retorna um boolean que representa o sucesso do match
}

EDIT: a expressao regutar serve apenas de exemplo, atencao que ele nao valida correctamente o numero de dias dos meses!

Não é possivel de uma forma sem recorrer a bibliotecas como "a = ler.nextint;" mas em JTextField?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shumy

Se queres apenas converter (onde é possível também validar), é usar classe "SimpleDateFormat".

Se usares regex, o Java SE já tem regex. Aqui esta um tutorial ressions/article.html'>http://www.vogella.com/articles/JavaRegularExpressions/article.html


Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.