Swing


Wie kann ich ein Textfeld erstellen, indem nur eine begrenzte Anzahl von Zeichen eingebbar sind?

package de.bastie.howto.swing.text;

import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
import javax.swing.text.AttributeSet;

//Für den Test
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * Title:        Make Java - How To
 * Description:  Ein Document für die Beschränkung der Eingabe der Länge nach
 * Copyright:    Copyright © 2002 - free for all use
 * @author Bastie - Sebastian Ritter
 * @version 1.0.0.0
 * @pattern Model der M-VC Konzepts von Java
 */

public class LengthLimitedDocument extends PlainDocument{

  /** Ist die maximale Gesamtlänge, die in das Textfeld eingetragen werden
   *  darf. Initialwert: 1024
   */
  private int maxSpace = 1024;

  /** Konstruktor */
  public LengthLimitedDocument (final int maxSpace) {
    super ();
    this.maxSpace = maxSpace;
  }

  /** Diese Methode muss überschrieben werden, um das gewünschte Verhalten
   *  zu erreichen. Sie kommt vom Javatyp AbstractDocument
   *  @param int Offset an dem der Text eingefügt werden soll.
   *  @param String Text der eingefügt werden soll
   *  @param AttributeSet Formatierungen des Textes
   *  @exception BadLocationException sofern der Text an einer Stelle eingefügt
   *             werden soll, die nicht vorhanden ist.
   *  @pattern StaticPolymorph as MethodDelegate
   */
  public void insertString (final int offset,
                            final String text,
                            final AttributeSet attributeSet)
          throws BadLocationException {
    //Prüfen, ob der einzufügende Text unseren Anforderungen entspricht
    if (this.isEnoughSpace(text)){
      super.insertString (offset, text, attributeSet);
    }
  }

  /** Prüft, ob es sich um eine Zahl handelt.
   * @return boolean true, wenn noch genügend Platz ist
   * @param toTest
   */
  protected boolean isEnoughSpace (final String toTest) {
    /* Prüft einfach anhand der Addition der beiden Längen.
       In diesem Beispiel wird dann der komplette String abgelehnt.
     */
    if (this.getLength() + toTest.length() > this.maxSpace) {
      return false;
    }
    return true;
  }
}
all rights reserved © Bastie - Sebastian Ritter @: w³: http://www.Bastie.de
Diese Seite ist Bestandteil der Internetpräsenz unter http://www.Bastie.de


Java Cobol Software Resourcen Service Links Über mich Zum Gästebuch Forum