[QUOTE=cmrudolph]In diesem Fall ist das Plus aber auch richtig Das liegt daran, dass ich die Zeichenklasse 1-9 davor weggelassen habe. Das Plus bedeutet, dass mindestens ein Zeichen aus der Zeichenklasse der Ziffern auftreten muss.
Je nach Quelle des zu prüfenden Strings kann es sein, dass dein Komma nur so aussieht wie eines, aber nicht mit dem im Quellcode eingegebenen übereinstimmt. Das bekommst du am einfachsten mit dem Debugger heraus.[/QUOTE]
OK danke, ich muss mir das nochmal genauer anschauen. Weil eigentlich ist dieser DocumentFilter Teil einer selbstgeschriebenen Klasse (abgeleitet von JTextField), in welche man Geldbeträge eingeben können soll. Eine eigene Klasse, damit ich die mit Funktionalität (Fokusweitergabe bei ENTER-Taste, Eingabemöglichkeit Betrag, Anzeige als formatierter String) und aber auch Layout (Hintergrundfarbe, Rahmen) erweitern kann. Ich wollte halt eine Klasse für Eingabe von Geldbeträgen, die ich an mehreren Stellen im Programm wiederverwenden kann. Vorher hatte ich mit double für die Geldbeträge gearbeitet und das aber jetzt auf BigDecimal (wegen der Genauigkeit) umgestellt. Ich hab das auch so, dass bei Fokuserhalt des Textfeldes ein Betrag eingegeben werden kann, der bei Fokusverlust als formatierter String (NumberFormat.getCurrencyInstance().format(value)) mit Eurozeichen dargestellt wird. Dazu hab ich aber auch den Wert als BigDecimal-Variable in dieser Klasse gespeichert, um sie nachher wieder auslesen zu können. Ist auch erstmal noch in der Entwicklungsphase. Vielleicht muss ich das Ganze nochmal neu überdenken und abändern…
*** Edit ***
Hmm, kannst du das nochmal genauer erläutern, wie das gemeint ist? Es könnte evtl. auch sein, dass es daher kommt, dass ich in meinem erstellten Textfeld je nach Fokus in einen DecimalMode (Fokuserhalt; zum eingeben von Beträgen wird der DocumentFilter gesetzt) und einem CurrencyMode (Fokusverlust; zur Anzeige des Geldbetrages formatiert mit Eurozeichen; DocumentFilter ist deaktiviert) wechsele.
Wie gesagt, es soll eine mehrfach verwendbare Komponente für mein Programm sein, damit ich relativ komfortabel Geldbeträge eingeben kann. Bis auf diesen DocumentFilter, mit dem ich erreichen möchte, dass nur bestimmte Zeichen in das Textfeld eingetragen werden können, funktioniert es ja auch schon so einigermassen (könnte noch einiges verbessert werden). Gibt es denn eine andere, bessere Möglichkeit (anstatt mit dem DocumentFilter) die möglichen Zeichen für das Textfeld festzulegen? Ist die ganze Idee mit so einem Textfeld speziell für Geldbeträge überhaupt sinnvoll? Oder gibt es da schon andere, bessere Ansätze?
Ich kann die Klasse mit dem Textfeld + DocumentFilter auch gerne mal hier reinstellen (sind insgesamt so ca. 220 Zeilen), falls gewünscht. Oder auch in den anderen Forenbereich, da es sich ja eigentlich um Swing handelt. Vielleicht gibt es ja Anregungen, Verbesserungsvorschläge (speziell zu dem DocumentFilter) oder sonstige Kritik.