Não consigo validar Jformattedtextfield

5 respostas Resolvido
java-seprogramaçãojava
M

Bom dia tenho um campo de data de nascimento Jformattedtextfield e não consigo valida -lo, estava fazendo o teste se o cliente esquece de digitar a data não esta caindo no JOPTIONPANE.

Ele esta iniciando com a formatação

jtData_nasc.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##/##/####")));

O código

else if (jtData_nasc.getText().equals(null)) {

JOptionPane.showMessageDialog(this, Preencha o seu nascimento.);

} else {

O código completo

TecnicoDAO usuarioDAO = new TecnicoDAO();
Tecnico usuario = new Tecnico();

if (jtNome.getText().equals("")) {
    JOptionPane.showMessageDialog(this, "Preencha o campo nome.");
    jtNome.requestFocus();
} else if (jtUsuario.getText().equals("")) {
    JOptionPane.showMessageDialog(this, "Preencha o campo técnico.");
    jtUsuario.requestFocus();
} else if (jtData_nasc.getText().equals(null)) {
    JOptionPane.showMessageDialog(this, "Preencha o seu nascimento.");
} else {

    Date data_nasc = null;
    try {
	data_nasc = new SimpleDateFormat("dd/MM/yyyy").parse(jtData_nasc.getText());
    } catch (ParseException ex) {
	Logger.getLogger(CadastroUsuarios.class.getName()).log(Level.SEVERE, null, ex);
    }
    String dataBanco_nasc = new SimpleDateFormat("yyyy-MM-dd").format(data_nasc);

    SimpleDateFormat formatador = new SimpleDateFormat("yyyy-MM-dd");
    Date data_atual = new Date();
    String data_inc = formatador.format(data_atual);

    usuario.setNome(jtNome.getText());
    usuario.setRua(jtRua.getText());
    if (jtNumero.getText().equals("")) {
	jtNumero.setText("0");
    }
    usuario.setNumero(Integer.parseInt(jtNumero.getText()));
    usuario.setCep(jtCep.getText());
    if (jtCep.getText().equals("     -   ")) {
	usuario.setCep("");
    }
    usuario.setBairro(jtBairro.getText());
    usuario.setTelefone_res(jtTelefone_res.getText());
    if (jtTelefone_res.getText().equals("(  )          ")) {
	usuario.setTelefone_res("Não informado");
    }
    usuario.setTelefone_cel(jtTelefone_cel.getText());
    if (jtTelefone_cel.getText().equals("(  )          ")) {
	usuario.setTelefone_cel("Não informado");
    }
    usuario.setCpf(jtCpf.getText());
    if (jtCpf.getText().equals("   .   .   -  ")) {
	usuario.setCpf("");
    }
    usuario.setRg(jtRg.getText());
    usuario.setData_nasc(dataBanco_nasc);
    usuario.setTecnico(jtUsuario.getText());
    usuario.setEmail(jtEmail.getText());
    usuario.setData_inc(data_inc);
    usuario.setCidade(jtCidade.getText());
    usuario.setEstado(jtEstado.getText());
    usuario.setData_alt(data_inc);

    usuarioDAO.cadastrarUsuario(usuario);
    JOptionPane.showMessageDialog(this, "Técnico inserido com sucesso!");
    jtNome.setText(null);
    jtRua.setText(null);
    jtNumero.setText(null);
    jtCep.setText(null);
    jtBairro.setText(null);
    jtTelefone_res.setText(null);
    jtTelefone_cel.setText(null);
    jtCpf.setText(null);
    jtRg.setText(null);
    jtData_nasc.setText(null);
    jtUsuario.setText(null);

    jtEmail.setText(null);
    jtCidade.setText(null);
    jtEstado.setText(null);

}

O erro apresentado:

dez 11, 2017 10:57:21 AM br.com.visual.CadastroTecnicos cadastro

GRAVE: null

java.text.ParseException: Unparseable date: "  /  /    "

at java.text.DateFormat.parse(DateFormat.java:366)

at br.com.visual.CadastroTecnicos.cadastro(CadastroTecnicos.java:407)

at br.com.visual.CadastroTecnicos.btCadastrarActionPerformed(CadastroTecnicos.java:272)

at br.com.visual.CadastroTecnicos.access$1300(CadastroTecnicos.java:18)

at br.com.visual.CadastroTecnicos$9.actionPerformed(CadastroTecnicos.java:209)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6533)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6298)

at java.awt.Container.processEvent(Container.java:2236)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2294)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)

at java.awt.Container.dispatchEventImpl(Container.java:2280)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.awt.EventQueue$4.run(EventQueue.java:729)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at java.util.Calendar.setTime(Calendar.java:1770)

at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)

at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)

at java.text.DateFormat.format(DateFormat.java:345)

at br.com.visual.CadastroTecnicos.cadastro(CadastroTecnicos.java:411)

at br.com.visual.CadastroTecnicos.btCadastrarActionPerformed(CadastroTecnicos.java:272)

at br.com.visual.CadastroTecnicos.access$1300(CadastroTecnicos.java:18)

at br.com.visual.CadastroTecnicos$9.actionPerformed(CadastroTecnicos.java:209)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6533)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)

at java.awt.Component.processEvent(Component.java:6298)

at java.awt.Container.processEvent(Container.java:2236)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2294)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)

at java.awt.Container.dispatchEventImpl(Container.java:2280)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.awt.EventQueue$4.run(EventQueue.java:729)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

5 Respostas

S
Solucao aceita

Essa condição nunca vai set true.
Se você consegue invocar o método equals de um objeto é porque ele não é null.
Se você tenta invocar um método em qualquer referência null, vai ocorrer uma NullPointerException.

Faça assim:

String texto = jtData_nasc.getText();
if (texto == null || "".equals(texto)) {
    JOptionPane.showMessageDialog(this, "Preencha o campo nome.");
M

Tive que alterar para este código para dar certo.

String texto = jtData_nasc.getText();

if (texto == null || “”.equals(texto) || "  /  /    ".equals(texto)) {

JOptionPane.showMessageDialog(this, Preencha o seu nascimento.);

Muito obrigado @staroski me ajudou muito.

I

Você também pode fazer desta forma:

if(jtData_nasc.getText().isEmpty()) JOptionPane.showMessageDialog(this, “Preencha o seu nascimento.”);

M

no meu caso o seu não daria certo pra mim, ja tinha testado este antes

S

Só pode fazer o jtData_nasc.getText().isEmpty() se tiver a certeza absoluta de que o jtData_nasc.getText() nunca vai retornar null.

Criado 11 de dezembro de 2017
Ultima resposta 11 de dez. de 2017
Respostas 5
Participantes 3