hallo,
ich habe folgendes problem:
über einen eigabedialog lasse ich mir einen wert eingeben, der eine ganzzahlige zahl (max. 4 stellen) sein muss um entsprechend weiterverarbeitet werden zu können.
ich habe dazu die in diesem forum dazu vorgeschlagene klasse StandardDocumentNumbers
ich habe folgendes problem:
über einen eigabedialog lasse ich mir einen wert eingeben, der eine ganzzahlige zahl (max. 4 stellen) sein muss um entsprechend weiterverarbeitet werden zu können.
ich habe dazu die in diesem forum dazu vorgeschlagene klasse StandardDocumentNumbers
Code:
import java.awt.Toolkit;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class StandardDocumentNumbers extends PlainDocument {
// private int maxLength_ = Integer.MAX_VALUE;
private int maxLength_ = Integer.MAX_VALUE;
public StandardDocumentNumbers(int maxLength) {
this.maxLength_ = maxLength;
}
public void insertString(final int offset, final String toInsert,
final AttributeSet notUsed) throws BadLocationException {
if (toInsert == null) return;
int actualLength = this.getLength();
boolean isInt = true;
if (actualLength + toInsert.length() < this.maxLength_) {
String [] splitted = toInsert.split("");
for (int i = 1; i< splitted.length; i++){
if (!(splitted[i].toString().equals("1") || splitted[i].toString().equals("2") || splitted[i].toString().equals("3")
|| splitted[i].toString().equals("4") || splitted[i].toString().equals("5")
|| splitted[i].toString().equals("6") || splitted[i].toString().equals("7")
|| splitted[i].toString().equals("8") || splitted[i].toString().equals("9")
|| splitted[i].toString().equals("0"))) isInt = false;
}
if (isInt) super.insertString(offset, toInsert, notUsed);
} else {
Toolkit.getDefaultToolkit().beep();
}
}
}
[\code]
implementiert.
an entsprechender stelle möchte ich darauf mit folgender funktion zurückgreifen:
[code]
private void mengeneingabe() {
StandardDocumentNumbers eingegebenes = new StandardDocumentNumbers(4);
String eingegebeneMenge = (String)JOptionPane.showInputDialog("Bitte Menge eingeben (nur Zahlen)", "");
try {
eingegebenes.insertString(eingegebenes.getLength(), eingegebeneMenge, null);
} catch (BadLocationException e) {
System.out.println("es wurde keine zahl eingegeben");
e.printStackTrace();
}
}
[\code]
leider klappt es nicht wie vorgesehen, weil
- ich kann mehr als 4-stellige zahlen eingeben ohne eine warnung zu bekommen
- ich kann auch buchstaben eingeben ohne eine warnung zu bekommen
- die länge des eingegebenen- eingegebenes.getLength()- wird mir immer mit 0 angegeben egal wie lange der eingegebene wert ist.
da so gar nichts klappt ,glaube ich die klasse "StandardDocumentNumbers" grundsätzlich falsch umgesetzt zu haben. ich hab erst einmal eine nacht darüber geschlafen - ohne allerdings auf den fehler gekommen zu sein und hoffe hier auf hilfe - vielleicht bin ich ja auf dem ganz falschen dampfer!