jotapeeh Posted February 3, 2013 at 05:46 PM Report #494058 Posted February 3, 2013 at 05:46 PM (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 February 3, 2013 at 07:29 PM by pmg GeSHi
eatg75 Posted February 3, 2013 at 07:28 PM Report #494070 Posted February 3, 2013 at 07:28 PM 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.
jotapeeh Posted February 3, 2013 at 10:52 PM Author Report #494098 Posted February 3, 2013 at 10:52 PM 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
eatg75 Posted February 3, 2013 at 11:11 PM Report #494100 Posted February 3, 2013 at 11:11 PM (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 February 3, 2013 at 11:12 PM 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.
jotapeeh Posted February 4, 2013 at 10:42 PM Author Report #494190 Posted February 4, 2013 at 10:42 PM 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?
shumy Posted February 6, 2013 at 10:19 AM Report #494366 Posted February 6, 2013 at 10:19 AM 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!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now