Jump to content

Recommended Posts

Posted (edited)

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
Posted

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.

Posted

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

Posted (edited)

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.

Posted

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?

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • 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.