Textfield auf Eingabe prüfen

Soulflyer84

Grünschnabel
Hallo...

Um Fehler schon bei der Eingabe auszuschließen habe ich das PlainDocument erweitert mit folgender Methode. Damit Kann ich schonmal nur Großbuchstaben eingeben!


Code:
  public class LetterDocument extends PlainDocument {

      private int maxLength_ = Integer.MAX_VALUE;

      /**
       * Erzeugt ein javax.swing.text.Document fuer das JTextField.
       *
       * @param maxLength
       *            maximale Zeichenanzahl
       */
      public LetterDocument(final int maxLength) {
          this.maxLength_ = maxLength;
      }

      /**
       * Fügt den String nur dann ein, wenn die maximale Anzahl noch nicht überschritten ist.
       *
       * @param offs
       *            Offset (Position, an der der String eingefuegt werden soll)
       * @param str
       *            einzufuegender String
       * @param a
       *            Attribut-Set (werden hier nicht weiter beachtet)
       * @throws BadLocationException
       *             wird "von oben" durchgereicht
       * @see javax.swing.text.AttributeSet
       */
      public void insertString(final int offs, final String str,
              final AttributeSet a) throws BadLocationException {
          if (str == null) {
              return;
          }
          int actualLength = this.getLength();
          if (actualLength + str.length() < this.maxLength_)  {
   
            if(str.matches("[A-Z]"))
              super.insertString(offs, str, a);
          } else {
              // z.B. beep()
          }
      }

  }


Wie bekomme ich es hin das auch das Leerzeichen geht und kleine Buchstaben?
Mit if(str.matches("[A-Z][a-z]+")) klappt es leider nicht...
 
Hi,

kann es sein dass deine Regular Expression falsch ist?

Probier mal:

Java:
if(str.matches("[ A-Za-z]*"))...

Lg, Yanick
 
Vielen Dank...funktioniert damit wunderbar :) hab jetzt nur das Problem das .setText immernoch nicht funktioniert. Woran könnte das liegen?`Kann per hand Text ins Feld schreiben aber per .setText (ob einfach so oder per variable aus der Datenbank) funktioniert nichts...:(
 
Zurück