pour une petite application de test J'ai besoin d'un TextField qui n'accepte que des nombres. De plus, l'utilisateur ne devrait pouvoir entrer que des chiffres compris entre 0 et 255. Jusqu'à présent, je trouve ceci:JTextfield n'accepte que des nombres entre 0-255
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
/**
* A JTextField that accepts only integers.
*
* @author David Buzatto
*/
public class IntegerField extends JTextField {
public IntegerField() {
super();
}
public IntegerField(int cols) {
super(cols);
}
@Override
protected Document createDefaultModel() {
return new UpperCaseDocument();
}
static class UpperCaseDocument extends PlainDocument {
@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
char[] chars = str.toCharArray();
boolean ok = true;
for (int i = 0; i < chars.length; i++) {
try {
Integer.parseInt(String.valueOf(chars[i]));
} catch (NumberFormatException exc) {
ok = false;
break;
}
}
if (ok) {
super.insertString(offs, new String(chars), a);
}
}
}
J'ajouté à la boucle for les numéros suivants de sorte que seules qui contiennent de 3 Digits peuvent être tapés
if(super.getLength() == 3) {
ok = false;
System.out.println("tooLong");
break;
}
Mais comment puis-je définir une valeur d'entrée maximale? L'utilisateur ne doit entrer que des chiffres qui vont de 0 à 255.
Merci à l'avance
entrée> = 0 && entrée <= 255? – eldo
Je sais, mais comment est-ce que je suis supposé mettre en œuvre ceci? Où puis-je obtenir/comment obtenir l'entrée? super.length() était facile mais comment faire super.getInput super.getText? – KilledByCheese
Voir http://stackoverflow.com/a/13424140/1076463 – Robin