Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) come fare ad impedire inserimento di stringhe in un jtextfield

    Ho una form realizzata con swing j2se 1.4.2
    In questa maschera ci sono una serie di jtextfield
    Questi textfield possono essere riempiti solo con numeri
    Voglio impedire che l'utente inserisca nei campi qualsiasi cosa che non sia un intero
    come posso fare?
    grazie

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Devi crearti una classe OnlyNumberDocument che rappresenta il Document del campo di testo e che si occupa di effettuare gli inserimenti tramite il metodo insertString:

    quando questo metodo è invocato dall'interfaccia grafica controlli la validità del testo che si sta inserendo o del testo che si otterrebbe nel campo di testo dopo l'inseirmento, e se il testo è valido esegui l'inserimento invocando il metodo della superclasse, altrimenti non fai nulla.

    Quando crei ilcampo di testo gli imposti il Document cosi:

    field.setDocument(new OnlyNumberDocument());


    Qui puoi vedere un esempio di Document che impedisce l'inserimento di caratteri o porzioni di testo che non siano numeri interi positivi:

    Codice PHP:
    class OnlyNumberDocument extends PlainDocument{

    public 
    void insertString(int offsString strAttributeSet a)
        
    throws BadLocationException{
            
    // Codice per controllare la validita dell'inserimento
            // Si può ottenre il testo corrente con:
            //
            // String actualText = getText(0, getLength());
            //
            // da cui si può costruire il nuovo testo utilizzando
            // i parametri offs (posizione incui inseerire il nuovo testo)
            // e str (stringa da inserire nella poszione offs) 
            //
            // Se la stringa risultante è ok richiamo il metodo della 
            // superclasse per l'inserimento effettivo con:
            //
            // super.insertString(offs, str, a);
            
            // Nell'esempi oche segue si controlla solo che il testo
            // AGGIUNTO sia un numero valido
            
    try{
                
    //se aggiungo numeri negativi ritorno
                
    if(Integer.parseInt(str) < 0)
                    return;
            }
            catch(
    NumberFormatException exc){
                
    //se non è u numero ritorno
                
    return;
            }
            
    super.insertString(offsstra);
        }



    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    In alternativa potresti utilizzare un JFormattedTextField che è una estensione di JTextField con la differenza che puoi indicargli quali sono i valori che vuoi vengano inseriti al suo interno.
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    mi potreste postare un esempio di codice che utilizza JFormattedTextField, ho provato a leggere nel sito dela sun ma è complesso

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.