Announcement

Collapse
No announcement yet.

nur zahlen in der textbox

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • nur zahlen in der textbox

    hallo,

    bin neu hier, daher auch meine recht einfache frage.

    wie kann ich in java meiner textbox auf einfache art und weise mitteilen, dass sie nur zahlenwerte annehmen soll, also nur die eingabe einer zahl erlaubt ist.

    vielen dank für den tipp bzw. hinweis.

  • #2
    Hallo ???!

    Es gibt zwei Möglichkeiten. Eine einfache und eine schwierigere. Die einfache besteht darin, daß Du, sobald der Cursor das Textfeld verläßt (was Du durch Abfangen des entsprechenden Events erfährst), den Text im Textfeld analysierst. Das macht man z.B. mit <i>Integer.parseInt()</i>. Klappt es, war es eine ganze Zahl, klappt es nicht, war der Text wohl keine gültige Ganzzahl (im Bereich des Integers). Im zweiten Fall wird eine NumberFormatException ausgelöst, die Du abfängst und im catch-Block den Text im Textfeld zum Beispiel rot markierst oder löschst, eine Fehlermeldung bringst oder sonst etwas.<br>
    Willst Du jedoch tatsächlich jegliche Eingabe von Zeichen verhindern, die keine Zahl ergibt, wird es schwieriger. Denn das kannst Du mit dem TextField bzw. JTextField nicht machen. Da müßtest Du einer der beiden erben, die Events abfangen und je nach Zeichen das Event weitergeben oder schlucken.<br>
    <br>
    In der Hoffnung geholfen zu haben,<br>
    Stefe

    Comment


    • #3
      Hallo,

      hier noch eine andere Möglichkeit:<BR>
      In der View-Klasse:<PRE>
      // Die Zahl begrenzt die Anzahl der Zeichen
      private ValidatedTxtDigit anzahl = new ValidatedTxtDigit(2);
      private JTextField jTxtFAnzahl = new JTextField(anzahl,"",0);
      </PRE>
      und dazu eine neue Klasse machen:
      <PRE>
      public class ValidatedTxtDigit extends PlainDocument {

      int maxCharacters;

      public ValidatedTxtDigit(int MaxChars) {
      maxCharacters = MaxChars;<BR>
      }

      public void insertString (int offset, String str, AttributeSet attr)
      throws BadLocationException, IndexOutOfBoundsException {

      char chrLet;

      chrLet = str.charAt(0);

      // hier wird die Eingabe auf Ziffern ueberprueft werden
      if (! Character.isDigit(chrLet))
      return;

      if ((getLength() + str.length()) <= maxCharacters) {
      super.insertString(offset, str, attr);
      }
      } // public void insertString (int offset, String str, AttributeSet attr)
      }
      </PRE>

      Gruss
      Rich

      Comment

      Working...
      X