Java - AWT/Swing

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);
   }
}

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007