Hallo,
Ich habe ein Document zusammengebastelt, damit ich in einem JTextField nur bestimmte Zahlen (0.0 - 8.9) eingeben kann.
Hier die Quelcode:
Wenn ich danach im JTextFeld eintippe, funktioniert es ganz gut. Aber wenn ich copy-paste mache, geht es irgendwie nicht. zB. wenn ich versuche 2.0 zu kopieren und in JTextFeld einzufügen, klappt es nicht. Kann mir jemand erklären, wieso es nicht geht?
Habe auch diesen Link gelesen. Hier kann man aber mehrere "." stellen, das ist aber auch nicht erwünscht.
http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/7213-jtextfield-dokumentarten.html#post37821
Gibt es oder einen einfachen Weg, indem ich Zahlen schon bei der Eingabe überprüfen kann. Was sollte ich zB. machen, wenn das obige Beispiel die Zahlen bis 20.0 akzeptiert. Dann kann "." entweder an der 2. Stelle oder an der 3. Stelle stehen. Muss ich dann immer so mit if-Bedingungen überprüfen?
Danke im Voraus.
Ich habe ein Document zusammengebastelt, damit ich in einem JTextField nur bestimmte Zahlen (0.0 - 8.9) eingeben kann.
Hier die Quelcode:
Java:
@Override
public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException{
if ((getLength() + s.length()) <= limit) {
int zahl = 0;
if(getLength()+s.length() == 1){
try{
zahl = Integer.parseInt(s);
if (zahl > 8)
return;
}catch(Exception ex){ //!< nur Integerwerte sind erlaubt
Toolkit.getDefaultToolkit().beep();
return ;
}
super.insertString(offset,s, attributeSet);
}
else if(getLength()+s.length() == 2){
if(!s.equalsIgnoreCase("."))
return;
super.insertString(offset,s, attributeSet);
}
else if(getLength()+s.length() == 3){
try{
Integer.parseInt(s);
}catch(Exception ex){ //!< nur Integerwerte sind erlaubt
Toolkit.getDefaultToolkit().beep();
return ;
}
super.insertString(offset,s, attributeSet);
}
}
}
Wenn ich danach im JTextFeld eintippe, funktioniert es ganz gut. Aber wenn ich copy-paste mache, geht es irgendwie nicht. zB. wenn ich versuche 2.0 zu kopieren und in JTextFeld einzufügen, klappt es nicht. Kann mir jemand erklären, wieso es nicht geht?
Habe auch diesen Link gelesen. Hier kann man aber mehrere "." stellen, das ist aber auch nicht erwünscht.
http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/7213-jtextfield-dokumentarten.html#post37821
Gibt es oder einen einfachen Weg, indem ich Zahlen schon bei der Eingabe überprüfen kann. Was sollte ich zB. machen, wenn das obige Beispiel die Zahlen bis 20.0 akzeptiert. Dann kann "." entweder an der 2. Stelle oder an der 3. Stelle stehen. Muss ich dann immer so mit if-Bedingungen überprüfen?
Danke im Voraus.