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 offs, String str, AttributeSet 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(offs, str, a);
}
}