TextField akzeptiert nur Zahlen

115%

Gesperrt
Ich bin es wieder!

Ich möchte das man in einem TextField nur Zahlen eingeben kann. sollte ich da mit dem KayListener arbeiten oder wie. Kein plan!
 
Um sicherzugehen das in einem TextFeld eine Eingabe stattgefunden hat muss ich das doch folgendermaßen schreiben.

Code:
if (jtf == null && jtf.equals("") && jtf.equals(" ")){
	System.out.println("Fehler");
					
}else{
	System.out.println("Eingabe hat statt gefunden!");
}

Wie löse ich das nur mit einer if-Abfrage?
 
Zuletzt bearbeitet:
Hallo,

wann willst du denn die Eingabe abfragen. Am besten machst du das wenn das Textfieldobject den Focus verliert.

Code:
JTextField oTextfield;

...

// Abfrage
String text = oTextfield.getText();
if(text == null || text.length() < 1)
{
  // keine Eingabe
}
else
{
   // Eingabe
}

Ich hoffe ich habe dein Problem richtig verstanden.

Grüße
R.
 
// Abfrage
String text = oTextfield.getText();
if(text == null || text.length() < 1)

"text" kann in diesem Falle NICHT null sein. Es wird eine Leere Zeichenkette zurück gegeben wie Beispielsweise "" .

Null könnte es nur sein, wenn es das TextField nicht gibt, aber dann würde eine NullPointerException ausgeworfen werden bei der zuweisung (String abc = ...)

Es reicht also text.length() < 1


Ich würde das so lösen (für ein normales TextFeld):
Code:
if (_tf_textfield.getText().trim().length() < 1){
	System.out.println("Fehler");
					
}else{
	System.out.println("Eingabe hat statt gefunden!");
}
trim() bewirkt, dass überflüssige Leerzeichen am Ende des Strings entfernt werden.
Code:
"abc                 "
würde dann zu "abc" werden. Es hilft dir auch, wenn du so eine Zeichenkette hast
Code:
"             "
. Da würden ebenso alle Leerzeichen abgeschnitten werden.

Da du aber für dein reines Integerfeld (nur zahleneingaben möglich) keine Leerzeichen reinschreiben kannst, kannst du das mit dem prüfen und abschneiden von Leerzeichen weglassen
 
Zuletzt bearbeitet:
Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;

class NumberField extends JTextField {
   protected void Document createDefaultModel() {
      return new NumberDocument();
   }

   private class NumberDocument extends PlainDocument {
      public void insertString(int offset, String str, AttributeSet as) {
         str = str.replaceAll("[^" + allowedString + "]", "");
         super.insertString(offset, str, as);
      }
   }

   private final String allowedString = "0123456789";
}
 
Zurück