für eine kleine Testanwendung Ich brauche ein TextField, das nur Zahlen akzeptiert. Außerdem sollte der Benutzer nur Zahlen von 0-255 eingeben können. Bisher fand ich dies:JTextfield akzeptiert nur Zahlen zwischen 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);
}
}
}
I die for-Schleife hinzugefügt folgende so nur Zahlen, die aus 3 Ziffern enthalten
if(super.getLength() == 3) {
ok = false;
System.out.println("tooLong");
break;
}
Aber wie eingegeben werden kann ich einen maximalen Eingangswert? Der Benutzer sollte nur Zahlen eingeben, die von 0-255 gehen.
Vielen Dank im Voraus
Eingang> = 0 && Eingang <= 255? – eldo
Ich weiß, aber wie soll ich das umsetzen, woher bekomme ich/wie bekomme ich den Input? super.length() war einfach, aber wie mache ich super.getInput super.getText? – KilledByCheese
Siehe http://StackOverflow.com/A/13424140/1076463 – Robin