E' vero, non avevo visto il try / catch... del resto, non sono abituato a far sollevare eccezioni quando non necessario: sono abituato a "prevenirle" ed evitarle, almeno quelle banali come la ArrayIndexOutOfBoundsException.
Sì: L'InputVerifier non dovrebbe occuparsi di notificare nulla all'utente. E' un verificatore: dovrebbe limitarsi a porre un veto (dire "Sì", oppure "No") rispetto a quanto digitato dall'utente. E lo fa attraverso il valore booleano di ritorno. Se l'input fornito soddisfa il controllo, si passa oltre, altrimenti semplicemente non si accetta l'input (e, se guardi bene, c'è un metodo chiamato "shouldYeldFocus()" che dice al sistema se la TextField deve mantenere il focus oppure no, proprio in base al valore di ritorno di verify() ).
Se guardi la documentazione del metodo verify(), ci trovi scritto:
La parte che ho messo in grassetto è la chiave: questo metodo NON dovrebbe avere effetti "visivi" per l'utente... ed è abbastanza facile capire perchè, se si sa cosa fa un InputVerifier: deve solo verificare se l'input è corretto o meno, influenzando il focus del componente. Se l'input è corretto, il componente può perdere il focus (quindi, l'utente può "uscire dal campo"), altrimenti deve detenere il focus finchè l'input non sarà corretto. Questo ha particolari influenze proprio sul EDT.Checks whether the JComponent's input is valid. This method should have no side effects.
Ciao.![]()