Allora metto un commento su ogni riga che ho capito:
codice:
class SignedNumericDocument extends PlainDocument // Estende la classe a PlainDocument
{
public void insertString (int offs, String str, AttributeSet a) //questa diciamo che l'ho capita anche se non so quali siano gli AttributeSet e cosa significhi offset
throws BadLocationException
{
if (str != null) // se la stringa non è nulla esegue il corpo dell'enunciato
{
String text = getText (0, getLength ()); // crea una variabile di tipo stringa, però non capisco il significato dei parametri di getText
char[] vch = str.toCharArray (); // questa me l'hai spiegata adesso (quindi ci sono tutti i caratteri qui dentro no?)
int i, j; // qui semplicemente dichiare di che tipo sono i e j
for (i = j = 0; i < vch.length; i++) // qui credo che dica che i e j partano da 0 e i si incrementa continuamente fino a un numero in meno dellla lunghezza di vch
{
if (Character.isDigit (vch[i]) || vch[i] == '-' && offs+i == 0 && !text.startsWith ("-")) // questa l'ho capita
vch[j++] = vch[i]; // qui praticamente incrementa j per il numero di i cioè se i = 5 allora j sara uguale a 5?
}
super.insertString (offs, new String (vch, 0, j), a);
}
}
}
solo che non capisco una cosa, qual'è il codice che vieta le lettere e accetta i numeri? e se voglio aggiungere un'altro carattere permesso devo creare un altro ciclo for?