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);
    }