Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Validazione JTextField

  1. #1

    Validazione JTextField

    Salve a tutti,
    desidero un "aiutino" da parte vostra per risolvere il seguente problema:
    ho una JTextField alla quale ho associato l'evento focus lost. In pratica quando il fuoco lascia la JTF viene effettuato un controllo sul testo digitato. Se il testo contiene errori viene visualizzato un messaggio di errore e poi il fuoco viene riportato su di essa (JTF). Il problema è che il fuoco ritorna solo dopo 3 o + tentativi di kiusura della MessageDialog.
    Come posso risolverlo? Grazie

    codice:
    private void TPIvaFocusLost(java.awt.event.FocusEvent evt) {                                
      
          String content = TPIva.getText();
          if (content.length() != 11) {
            try {
              Integer.parseInt(content);
            } catch (NumberFormatException e) {
              getToolkit().beep();
              JOptionPane.showMessageDialog(null, "Sono ammessi solo valori numerici");
              TPIva.grabFocus();
            }
          }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Come espressamente richiesto dal Regolamento interno, il codice va postato usando gli appositi tag CODE in modo da non perdere la formattazione e renderlo, quindi, più facilmente leggibile nel forum.

    Ho corretto io il tuo post.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Validazione JTextField

    Originariamente inviato da saverix80
    Il problema è che il fuoco ritorna solo dopo 3 o + tentativi di kiusura della MessageDialog.
    Come posso risolverlo?
    Quello che stai cercando di fare è un "gioco" un po' delicato. Ma si può risolvere. Nel caso dell'errore (nel tuo caso dentro il catch) fai:

    codice:
    JOptionPane.showMessageDialog(TPIva, ".....messaggio.....");
            
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            TPIva.requestFocusInWindow();
        }
    });
    P.S. Secondo la documentazione, è preferibile requestFocusInWindow piuttosto che grabFocus.

    EDIT: corretto, perché basta anche solo come è adesso sopra.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.