salve avrei un problema con una NumberFormatException
ho una funzione in cui faccio l'assegnamento del contenuto di una textfield ad un intero all'interno di un blocco try-catch dove intecetto questa eccezione.
nel caso in cui il valore inserito nella textfield non è un intero logicamente salta l'eccezione ed io lo risolvo visualizzando un messaggio di errore tramite JOptionPane.
premetto che intercetto sia l'actionPerformed che il focusLost della textfield.
il problema sta nel fatto che se inserisco un valore errato e clicco INVIO (azionando quindi l'acionPerformed) si arrabbia e mi fa vedere il JOptionPane vuoto senza bottoni ne messaggio e se cerco di chiuderlo con la X ne riapre immediatamente un altro.
Strano! mentre se non clicco INVIO e cambio il focus cliccando da un'altra parte della finestra (e quindi azionando il focusLost) si comporta come voglio.
Mi sapete spiegare come mai succede? Il problema lo risolvo tranquillamente non intercettando l'actionPerformed tanto il messaggio di errore melo fa vedere comunque appena la textfield perde il focus, però era solo per curiosità
posto anche il codice per semplificare la spiegazione del problema
codice:
protected void txt_num_attori_actionPerformed(ActionEvent evt)
{
txt_event();
}
protected void txt_num_attori_focusLost(FocusEvent evt)
{
txt_event();
}
protected void txt_event()
{
try
{
num_attori = Integer.parseInt(txt_num_attori.getText());
switch(num_attori)
{
...
...
...
}
}
catch(NumberFormatException ex)
{
JOptionPane.showMessageDialog(null, "Il numero deve essere intero!", "Error", 2);
}
}