Não sei o que está havendo já usei o metodo antes e funcionou legal, mas simplesmente não esta funcionando agora!
meu codigo!
Date agora = new Date();
GregorianCalendar dataOrigem = null;
dataOrigem = new GregorianCalendar(Integer.parseInt(txtDataOrigem.getText().substring(0, 1)),
Integer.parseInt(txtDataOrigem.getText().substring(2, 3)),
Integer.parseInt(txtDataOrigem.getText().substring(4, 7)));
if(dataOrigem.before(agora)){
JOptionPane.showMessageDialog(rootPane, "Data inválida");
}
else{
Pessoa pessoa = new Pessoa(nome, endereco, fone, email, cpf, bairro, cidade, uf, dataOrigem);
o sistema não está validando as datas!
Use a classe SimpleDateFormat para passar de String para Date
http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
Mas se tá passando é porque alguma coisa tá fazendo com que o before retorne false…
Agora esta estourando a ParseException:
[code]
SimpleDateFormat formatoData = new SimpleDateFormat();
Date dataOrigem = null;
Date agora = new Date();
try {
dataOrigem = formatoData.parse(txtDataOrigem.getText());
} catch (ParseException ex) {
ex.printStackTrace();
}
if(dataOrigem.before(agora)){
JOptionPane.showMessageDialog(rootPane, "Data inválida");
}
else{
Pessoa pessoa = new Pessoa(nome, endereco, fone, email, cpf, bairro, cidade, uf, dataOrigem);[/code]
agora q vi q apareceu uma npe de brinde! :?
[code]
java.text.ParseException: Unparseable date: “21/12/2010”
at java.text.DateFormat.parse(DateFormat.java:337)
at Interface.JanelaAdicionarNovo.btnAdicionarActionPerformed(JanelaAdicionarNovo.java:296)
at Interface.JanelaAdicionarNovo.access$100(JanelaAdicionarNovo.java:11)
at Interface.JanelaAdicionarNovo$2.actionPerformed(JanelaAdicionarNovo.java:94)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Interface.JanelaAdicionarNovo.btnAdicionarActionPerformed(JanelaAdicionarNovo.java:302)
at Interface.JanelaAdicionarNovo.access$100(JanelaAdicionarNovo.java:11)
at Interface.JanelaAdicionarNovo$2.actionPerformed(JanelaAdicionarNovo.java:94)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)[/code]
Usa assim
new SimpleDateFormat("dd/MM/yyyy");
Continuou lançando a excessão!! :? :? :?
Posta o código pra ver como ficou
ok
Esse é o evento que adiciona uma pessoa na lista eu valido a data la dentro!
private void btnAdicionarActionPerformed(java.awt.event.ActionEvent evt) {
if(txtNome.getText().trim().equalsIgnoreCase("")){
JOptionPane.showMessageDialog(rootPane, "O campo nome deve ser preenchido");
}
else if(txtEmailGeral.getText().trim().equalsIgnoreCase("")){
JOptionPane.showMessageDialog(rootPane, "O e-mail geral nome deve ser preenchido");
}
else if(txtEndereco.getText().trim().equalsIgnoreCase("")){
JOptionPane.showMessageDialog(rootPane, "O campo endereço deve ser preenchido");
}
else if(txtBairro.getText().trim().equalsIgnoreCase("")){
JOptionPane.showMessageDialog(rootPane, "O campo bairro deve ser preenchido");
}
else if(txtCidade.getText().trim().equalsIgnoreCase("")){
JOptionPane.showMessageDialog(rootPane, "O campo cidade deve ser preenchido");
}
else if(txtUF.getText().trim().length() < 2){
JOptionPane.showMessageDialog(rootPane, "O campo UF deve ser preenchido completamente");
}
else if(txtTelefone.getText().trim().equalsIgnoreCase("")){
JOptionPane.showMessageDialog(rootPane, "O campo telefone deve ser preenchido");
}
else if(txtCpf.getText().trim().length() < 11){
JOptionPane.showMessageDialog(rootPane, "O campo CPF deve ser preenchido completamente");
}
else if(txtDataOrigem.getText().trim().length() < 8){
JOptionPane.showMessageDialog(rootPane, "O campo Data de Nascimento / Fundação deve ser preenchido completamente");
}
else{
String nome = txtNome.getText();
String email = txtEmailGeral.getText();
String fone = txtCidade.getText();
String endereco = txtEndereco.getText();
String bairro = txtBairro.getText();
String cidade = txtTelefone.getText();
String uf = txtUF.getText();
String cpf = txtCpf.getText();
SimpleDateFormat formatoData = new SimpleDateFormat("dd/mm/aaaa");
Date dataOrigem = null;
Date agora = new Date();
try {
dataOrigem = formatoData.parse(txtDataOrigem.getText());
} catch (ParseException ex) {
ex.printStackTrace();
}
if(dataOrigem.before(agora)){
JOptionPane.showMessageDialog(rootPane, "Data inválida");
}
else{
Pessoa pessoa = new Pessoa(nome, endereco, fone, email, cpf, bairro, cidade, uf, dataOrigem);
pessoa.setApelido(txtApelido.getText());
pessoa.setCep(txtCep.getText());
pessoa.setHomepage(txtHomePage.getText());
pessoa.setFax(txtFax.getText());
cadastroDePessoas.adiciona(pessoa);
JOptionPane.showMessageDialog(null, "Individuo adicionado com sucesso","Parabéns", JOptionPane.INFORMATION_MESSAGE);
this.dispose();
}
}
}
Cara … vc colocou diferente
Nao é new SimpleDateFormat(“dd/mm/aaaa”);
É new SimpleDateFormat("[color=red]dd/MM/yyyy[/color]");
(e é case sensitive)
[quote=rogelgarcia]Cara … vc colocou diferente
Nao é new SimpleDateFormat(“dd/mm/aaaa”);
É new SimpleDateFormat("[color=red]dd/MM/yyyy[/color]");
(e é case sensitive)[/quote]
Mas ateh nas Strings
Não tinha testado direto, funcionou legal!
Brigadão pela ajuda mesmo sendo meio tosca a duvida!
Tranquilo… até mais!!
O negócio da String é porque aquela String define o padrão da data que vc quer… então tem que ser igualzinho eu postei… cada letra é uma coisa
MM significa mes usando duas casas
se vc coloca
mm siguinitica minutos usando duas casas…
Olha o link que te passei que lá tem todos os simbolos que podem ser usados…
Eu dei uma olhada na API, mas é muita baitolisse do JAVA devia ter algum metodo mais facil de se fazer isso, ora ter que chamar outra classe para trocar o tipo do dado!
Comentário:
Existem os metodos after() e before() não seria a mesma coisa se soh existisse um?
Haahahha… essas baitolices é para dar poder ao programador… mas precisa saber usar…
Existe o after e o before… para poder facilitar…
De qualquer jeito… after nao é o contrário de before :lol:
Pode ateh dar poder ao programador, mas fica parecendo gambiarra, com akelas Strings no meio!
não gosto dessas Datas em JAVA!
A String é o formato… né gambiarra nao
Formatos são dados em Strings…
Tem umas outras formas de usar formatos pre montados aí vc nao precisa usar a String… mas fica de pesquisa pra vc…
Axei mais um errinho, qdo eu não passo o formato certo ele lança uma npe, obvio, pq nada vai ser passado, o que eu deveria fazer pra conserar isso?
O NullPointer nao foi pelo formato inválido… e sim porque nao gerou nenhuma data…
aí a data fica nula… e dá nullpointer…
Ao invés de dar e.printStackTrace… vc dá throw new RuntimeException(“Nao foi possivel converter a data”);
Olha como eu fiz, mas continuo estourando a npe!
SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
Date dataOrigem = null;
Date agora = new Date();
try {
dataOrigem = formatoData.parse(txtDataOrigem.getText());
}
catch (ParseException ex) {
JOptionPane.showMessageDialog(rootPane, "Formato da data incorreto", "Erro", JOptionPane.ERROR_MESSAGE);
}
catch (NullPointerException npe) {
throw new RuntimeException("Campo em Branco");
}
if(dataOrigem.after(agora)){
JOptionPane.showMessageDialog(rootPane, "Data inválida");
}
else{
Pessoa pessoa = new Pessoa(nome, endereco, fone, email, cpf, bairro, cidade, uf, dataOrigem);
pessoa.setApelido(txtApelido.getText());
pessoa.setCep(txtCep.getText());
pessoa.setHomepage(txtHomePage.getText());
pessoa.setFax(txtFax.getText());
cadastroDePessoas.adiciona(pessoa);
JOptionPane.showMessageDialog(null, "Individuo adicionado com sucesso","Parabéns", JOptionPane.INFORMATION_MESSAGE);
this.dispose();