Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [JAVA] Errore durante controllo campi

    Ho una classe nella quale devo inserire utilizzando apposite textfield dei valori (nome, cognome,telefono,etc).

    Alcuni campi però, come ad esempio quello telefonico necessitano di essere controllati mediante il blocco try&catch per verificare che ad esempio insieme al numero non sia stato immessa un lettera.

    Ho quindi creato un metodo apposito, controlloCampo, nel quale vado ad effettuare tutti i controlli:

    codice:
    public boolean controlloCampo()
    {
     char[] nomeNum = campoNome.getText().toCharArray();
     char[] cognomeNum = campoCognome.getText().toCharArray();
     char[] telefonoNum = campoTelefono.getText().toCharArray();
     .
     .
     .
            
      if ( (campoNome.getText().equals("")) || ...)
       {
       	JOptionPane.showMessageDialog(null, "Uno o più campi sono vuoti", "Si è verificato un errore", JOptionPane.ERROR_MESSAGE);
        return false;
       }
       else
       if (Integer.parseInt(campoCivico.getText()) <= 0)
       {
        JOptionPane.showMessageDialog(null, "Il valore inserito nel campo ' N° civico' non è valido", "Si è verificato un errore", JOptionPane.ERROR_MESSAGE);
        return false;
       } 
      // ometto di scrivere tutta una serie di else if
    
      // il blocco try&catch è il problema
    
      try
        {
         Long.parseLong(campoTelefono.getText());
        }      
        catch (NumberFormatException n)
        {
         JOptionPane.showMessageDialog(null, "Il campo 'telefono' contiene un valore non valido", "Si è verificato un errore", JOptionPane.ERROR_MESSAGE);
         return false;
        }
    
     return true;
    }
    La compilazione va a buon fine, e il programma si esegue senza problemi, ma se per caso provo ad inserire nel campo del telefono una lettera al posto di un numero si verifica un errore di tipo NumberFormatException.

    Che posso fare??

  2. #2
    Anzichè fare un controllo sul valore inserito, potresti crearti un filtro per il tuo JTextField in modo che se l'utente digita un carattere non numerico questo non viene proprio inserito. per fare ciò devi definire un tuo Document personalizzato per il tuo JTextField, e in questo ridefinire il metodo insertString:

    Codice PHP:
    import javax.swing.text.*;

    public class 
    NumberFilter extends PlainDocument {

         public 
    NumberFilter() {
            
    super();
         }

         public 
    void insertString (int offsetString  strAttributeSet attrthrows BadLocationException {
              if (
    str == null)
                   return;
              if (!
    Character.isDigit(str.toCharArray()[0]))
                        return;
              else
                   
    super.insertString(offsetstrattr);
         

         }



    e poi settare il Document del tuo JTextField:

    Codice PHP:
    tuoTextField.setDocument(new NumberFilter()); 
    L'ho scritta al volo andando un pò a memoria ma dovrebbe funzionare
    Al mio segnale... scatenate l'inferno!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Ti ringrazio!

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.