Não consigo validar Jformattedtextfield

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)

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.");
1 curtida

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.

Você também pode fazer desta forma:

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

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

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

1 curtida