Jump to content
jotapeeh

Data

Recommended Posts

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

Edited by pmg
GeSHi

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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!

Edited by 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.

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.