Utilizzo il seguente codice per impedire l'inserimento, in un componente swing (jtextfield), di caratteri che non siano numeri.
Purtroppo se inserirsco un numero troppo lungo, ad esempio: 666666666666666666666codice:public class LimitNumberDocument extends PlainDocument{ private static final long serialVersionUID = -6829435640064907333L; private int max_length = 0; public LimitNumberDocument(int max_length) { this.max_length = max_length; } public void insertString(int offs, String str, AttributeSet a) throws BadLocationException{ try{ //se aggiungo numeri negativi ritorno //if(Integer.parseInt(str) < 0) { if(Long.parseLong(str) < 0) { System.err.println("numero negativo non ammesso"); return; } } catch(NumberFormatException e){ //se non è un numero ritorno System.err.println("NumberFormatException"); return; } int chNumberInsert = getText(0, offs).length(); int chNumberToInsert = str.length(); int chNumberMax = chNumberInsert + chNumberToInsert; if (chNumberMax <= max_length) super.insertString(offs, str, a); else System.out.println("numero di lunghezza superiore a quella permessa per il campo"); } }
il codice riportato mi eccede nel punto Long.parseLong, ed il numero non viene accettato
Come faccio ad evitare questo problema?

Rispondi quotando

