JMaskFormatter

BAAAM

Mitglied
Hallo zusammen,

ich habe das Problem, dass ich in einem Textfeld nur Zeichen eingeben möchte.
Ich benutze ein JFormattedTextField mit einem MaskFormatter der als Muster ####, also 4 Ziffern zulässt.
Leider muss ich jetzt genau 4 Ziffern eingeben, sonst wird die Eingabe gelöscht oder Zurückgesetzt. Was muss ich machen, damit man auch weniger als vier Ziffern aber maximal vier eingeben kann?

Vielen Dank für Hilfe
MfG
BAAAM
 

eRaaaa

Top Contributor
Mit einem DocumentFilter sollte das gehen:

Java:
	JTextField textfeld = new JTextField(4);
	((AbstractDocument) textfeld.getDocument()).setDocumentFilter(new DocumentFilter() {
		    public void replace(FilterBypass fb, int offset,int length, String text, AttributeSet attrs) throws BadLocationException {
			if (text.matches("\\d+")&& fb.getDocument().getLength() + text.length()- length <= 4) {
			    super.replace(fb, offset, length, text, attrs);
			}
		    }
		});

(http://www.java-forum.org/bilder-gu...7213-jtextfield-dokumentarten.html#post587501)
 
G

Gast2

Gast
Warum nimmst du einen MaskFormatter für Zahlen?

Java:
		NumberFormat format = NumberFormat.getInstance();
		format.setMaximumIntegerDigits(4);
		format.setParseIntegerOnly(true);
		format.setGroupingUsed(false);
		NumberFormatter formatter = new NumberFormatter(format);
		formatter.setAllowsInvalid(false);
		JFormattedTextField formattedTextField = new JFormattedTextField(formatter);
 
Zuletzt bearbeitet von einem Moderator:

BAAAM

Mitglied
@eRaaa

Vielen Dank, doch kenne ich mich leider überhaupt nicht mit Dokumenten aus ;-)

@SirWayne

Vielen Dank, hat alles super funktioniert!
 

Oben