Olá galerinha,
Bom, estou aqui porque estou com um pequeno probleminha:
Estou começando agora com Java mais avançado e nunca usei exceções.
Atualmente estou desenvolvendo um sistema para a biblioteca da minha escola e na tela de cadastro de alunos existe um campo chamado “Matrícula” do tipo int.
Aí, quando se digitava algo diferente de números, aparecia o seguinte erro:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Num_matricula"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at biblioteca.model.Aluno.setMatricula(Aluno.java:101)
at biblioteca.gui.Cadastro_aluno.cadastrarActionPerformed(Cadastro_aluno.java:229)
at biblioteca.gui.Cadastro_aluno.access$100(Cadastro_aluno.java:6)
at biblioteca.gui.Cadastro_aluno$2.actionPerformed(Cadastro_aluno.java:106)
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:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
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:4577)
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)
Então, eu fiz um bloco Try-Catch do tipo NumberFormatException, para tratar essa exceção e até deu certo, mas…
Bom, primeiramente vejam a parte do meu código:
[code]private void cadastrarActionPerformed(java.awt.event.ActionEvent evt) {
aluno.setNome( nome.getText() );
try {
aluno.setMatricula( matricula.getText() );
}
catch (NumberFormatException e){
JOptionPane.showMessageDialog(null,"O campo matrícula deve conter apenas números!" );
matricula.setText(null);
}
aluno.setCurso( curso.getText() );
aluno.setSerie( serie.getText() );
aluno.setEndereco( endereco.getText() );
aluno.setStatus( status.getText() );
aluno.setObservacao( observacao.getText() );
JOptionPane.showMessageDialog(null,"Cadastro realizado com sucesso!");
limpaDados();
}[/code]
Bom, o que não está dando certo é que após a instrução
matricula.setText(null);
ser executada, o programa logo executa a instrução:
JOptionPane.showMessageDialog(null,"Cadastro realizado com sucesso!");
limpaDados();
E desse jeito ele limpa o campo matrícula, mas não dá tempo de digitar da forma correta e logo aparece a mensagem “Cadastro realizado com sucesso!”.
O que eu faço pra mensagem só aparecer depois que eu digitar novamente?
Me ajudem!
Obrigada desde já!