Grazie mille per la velocissima risposta ma purteoppo non mi funziona, continua a farmi digitare sempre un solo carattere. Ti riposrto più nel dettaglio cosa ho fatto:
Classe dove si trova la mia GUI con la JTextField:
codice:
textField_4 = new JTextField();
textField_4.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent arg0) {
NumberDocument digitsOnlyDoc1 = new NumberDocument();
textField_4.setDocument(digitsOnlyDoc1);
}
});
Nella classe NumberDocument ho copiato una porzione del tuo codice che riporto:
codice:
public class NumberDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null)
return;
StringBuffer sb = new StringBuffer(str.length());
System.out.println(str.length());
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
// Inserts the character into the buffer
// ONLY if it is a digit.
if (Character.isDigit(c)) {
sb.append(c);
}
}
super.insertString(offs, sb.toString(), a);
}
}
ho aggiunto un stampa della lunghezza che mi ritorna sempre 1.
attendo suggerimenti 
saluti
nh