JTextField, Anzahl der Zeichen begrenzen
Im folgenden Code-Beisiel wird die maximale Anzahl von Zeichen auf 10 begrenzt:
Dazu wird ein eigenes Document „MaxSizeDocument“ definiert.
package com.sowas.snippets.jtextfield; import java.awt.BorderLayout; import java.awt.Toolkit; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; public class MaxSizeDocument extends PlainDocument { int maxSize; public MaxSizeDocument(int maxSize) { this.maxSize = maxSize; } @Override public void insertString (final int offset, final String text, final AttributeSet attributeSet) throws BadLocationException { if (isNewLengthOk(text)) super.insertString (offset, text, attributeSet); else Toolkit.getDefaultToolkit().beep(); } protected boolean isNewLengthOk(final String text) { if (getLength() + text.length() <= maxSize) return true; return false; } public static void main (final String [] ignored) { JFrame frame = new JFrame ("JTextField-Demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new BorderLayout (0,0)); frame.getContentPane().add(new JTextField(new MaxSizeDocument(10), "", 0), BorderLayout.NORTH); frame.pack (); frame.setVisible (true); } }