Não consigo pegar a exceção e mostrar a mensagem erro. É um campo que não aceita letras.
O erro:
Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “a”
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at AreaGrafica$HandLerButton.actionPerformed(AreaGrafica.java:99)
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:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
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)
Meu codigo:
[code]
private void desenha(){
try{
painelDeDesenho.setY2(Integer.parseInt(campo1.getText()));
}
catch(NumberFormatException e) {
JOptionPane.showMessageDialog(null, “Este campo não permite a entrada de letras!”);
}
painelDeDesenho.setY1(0);
painelDeDesenho.setX1(40);
painelDeDesenho.setX2(40);
Você utiliza o parseInt em dois momentos, provavél que o segundo momento também esteja ocorrando NumberFormatException, o que faz com que o seu tratamento não seja adequado. Utilize o tratamento para todos os campos que desejar efetuar um parser, ou seja, dentro do bloco try-catch todos os campos que efetuem parser.
vc deve ta usando Exception para todas as excecoes, lembre-se que deve ter catch especificos, ter exception para tudo nao eh uma boa pratica. Principalmente nesse caso que vc sabe que pode ter uma excecao claramente. altere seu catch e trate a excecao.
LPJava, na verdade o código dele trata correto, concorda?
try{
painelDeDesenho.setY2(Integer.parseInt(campo1.getText()));
}
catch(NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Este campo não permite a entrada de letras!");
}
Provavél é que mais alguma linha tenha ocorrido a excessão e não esteja sendo tratada.
Agora quero tratar além de letras números negativos. O estranho é que ele não verifica quando digito numeros negativos. Mas quando digito letras funciona direitinho.
Alguem consegue achar o meu erro?
painelDeDesenho.setY1(0);
painelDeDesenho.setX1(40);
painelDeDesenho.setX2(40);
painelDeDesenho.setYb2(Integer.parseInt(campo2.getText()));
painelDeDesenho.setYb1(0);
painelDeDesenho.setXb1(120);
painelDeDesenho.setXb2(40);
painelDeDesenho.repaint();
}
catch(NumberFormatException e) {
JOptionPane.showMessageDialog(null, " Este campo não permite a entrada da letras! "+ e.getMessage());
}
catch(Exception e){
y1= Integer.parseInt(campo1.getText());
yb1= Integer.parseInt(campo2.getText());
if (y1<= -1){
JOptionPane.showMessageDialog(null, "O valor digitado não pode ser negativo!" );
}if (yb1<=-1){
JOptionPane.showMessageDialog(null, "O valor digitado não pode ser negativo!");
}
else{
return;
}
}
}
[/code]