Datentypen Textfeld auf Nicht-Zahlen überprüfen

Beatsleigher

Bekanntes Mitglied
Tach, allerseits :)

Ich bin derzeit dabei ein Webserver in BukkitUI zu implementieren, damit es mit McMyAdmin mithalten kann.

Nun, ich will, dass der Nutzer die Freiheit hat, den Webserver so einzustellen, wie er will.
Dazu gehört auch nun mal IP, anzahl der Nutzer, etc., etc.

Jetzt will ich, dass der Nutzer die Werte in eine JTextField eingibt, so weit so gut, doch, was ist wenn ich einen Schwachkopp als Nutzer bekomme, und er dann Zahlen eingibt (ist schon mal passiert :autsch: )

Ich wollte mit diesem Code das unterbinden:
Java:
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        try {
            int i = Integer.valueOf(jTextField1.getText());
        } catch (NumberFormatException ex) { 
            JOptionPane.showMessageDialog(null, "WARNING: Please enter a valid NUMBER!", "Enter a Valid Number.", JOptionPane.WARNING_MESSAGE); 
            char[] array = jTextField1.getText().toCharArray();
            int i = array.length - 1;
            String s = "";
            for (int I = 0; I < i; I++)
                s += array[I];
            jTextField1.setText(s);
        }
    }

Aber:
BukkitUI-WebSettings.png


Ich glaube ich habe gerade wieder eines meiner berühmten (oder auch nicht so...) Hirnfurze :bloed:

Was hab ich hier falsch gemacht?

Danke im Vorraus!
 

Gucky

Top Contributor
Du könntest alles, was nicht in ein solches Feld gehört, entfernen. Stichwort RegEx.

Wie sieht denn eine richtige Eingabe aus, wie eine falsche und wie reagiert dein Programm auf beide mit und ohne deine Absicherung?
 

Beatsleigher

Bekanntes Mitglied
Du könntest alles, was nicht in ein solches Feld gehört, entfernen. Stichwort RegEx.

Wie sieht denn eine richtige Eingabe aus, wie eine falsche und wie reagiert dein Programm auf beide mit und ohne deine Absicherung?

In dem Bild sind die meisten TextFelder richtig eingegeben, nur bei dem Ersten habe ich lauter Bs eingegeben, um es zu testen.

Wenn das erste Feld ein Zeichen enthalten würde, welches keine Zahl ist, würde das Programm nich durch eine Array laufen können, welches die Nutzer-Infos enthält (bzw. durch zwei Arrays) - Das wäre ja erstmal halb so tragisch, denn die Defaulteinstellung ist eins.

Wenn IP und Port, jedoch, falsch eingestellt würden, würde das Programm komplett abschmieren, denn mit diesen Daten versucht er einen Webserver einzurichten, etc, damit der Nutzer fernzugriff auf das Programm hat.
 

Beatsleigher

Bekanntes Mitglied
Ok, also ich bin mit RegEx schon weiter gekommen:

Java:
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {                                     
        String exp = "[^a-z][^A-Z]";
        if (jTextField1.getText().matches(exp)) {
            JOptionPane.showMessageDialog(null, "WARNING: Number field must not contain " + exp + "!", "Regex Match!", JOptionPane.WARNING_MESSAGE);
        }
    }

Das schmeißt dann immer ein Dialog-Feld, wenn etwas nicht-passendes gefunden wird, jedoch schmeißt er (auch bei Zahlen) bei jedem dritten Zeichen einen Error...
 

Natac

Bekanntes Mitglied
Kannst du das Fehlverhalten bitte beschreiben? Im Moment sehe ich nur ein Stück Code und eine Engabemaske zusammen mit der nichtssagenden Aussage "geht nicht".

Wann soll denn das Feld geprüft werden? Während der Eingabe, oder wenn man auf einen Button drückt (sehe aber keinen Button).

Ich denke du lauscht auf das falsche Event. Wüsste jetzt nicht, wann ein JTextField ein Action-Event feuert. Aber sich nicht, wenn man gerade was eingibt. Und
Code:
jTextField1ActionPerformed
hört sich so an, als ob du diese Methode bei einem Action-Event aufrufst.

Btw: "jTextField1" ist kein guter Name. "MaxUsers" wäre vielleicht sprechender!?
 

Gucky

Top Contributor
Es können beide in eine Klammer
Code:
[^a-zA-Z]
.
Was machst du, wenn irgendein Hirni Sonderzeichen eingibt? Jetzt suchst du nach Buchstaben. Du solltest eher nach keinen Zahlen suchen. Das geht auch mit RegExen.
 

Joose

Top Contributor
Java:
        String exp = "[^a-z][^A-Z]";
        if (jTextField1.getText().matches(exp)) {

Mit dieser Expression ist alles gültig wenn es max. 2 Zeichen hat. Das 1.Zeichen darf kein Kleinbuchstabe sein, das 2.Zeichen darf kein Großbuchstabe sein.

Wie Gucky schon richtig angemerkt hat --> Sonderzeichen. Hier ist es einfacher zur Überprüfen ob gültige Werte eingeben worden sind (0-9).

Achtung folgender Code würde nur für einstellige Zahlen stimmen.
Java:
String exp= "[0-9]";
Hier findest du ein Tutorial zu Regex dort solltest du finden wie man den Code dann für mehrstellige Zahlen anpasst.
 

Beatsleigher

Bekanntes Mitglied
Mit dieser Expression ist alles gültig wenn es max. 2 Zeichen hat. Das 1.Zeichen darf kein Kleinbuchstabe sein, das 2.Zeichen darf kein Großbuchstabe sein.

Wie Gucky schon richtig angemerkt hat --> Sonderzeichen. Hier ist es einfacher zur Überprüfen ob gültige Werte eingeben worden sind (0-9).

Achtung folgender Code würde nur für einstellige Zahlen stimmen.
Java:
String exp= "[0-9]";
Hier findest du ein Tutorial zu Regex dort solltest du finden wie man den Code dann für mehrstellige Zahlen anpasst.

Erstens, nein. Der RegEx überprüft auf Klein- und Großbuchstaben.

Und danke an alle, aber ich habe es ganz einfach gemacht (das mir das nicht einfach vorher eingefallen ist…)
Java:
    private static boolean isNumeric(final String input) {
        try {
            Integer.parseInt(input); 
            return true;
        } catch (Exception ex) { return false; }
    }
 

Gucky

Top Contributor
Nicht sehr sauber, meiner Meinung nach aber es läuft.

Nur steht in der API SIGNED Integer. Das hieße ein Minuszeichen vor den Zahlen wird noch mit interpretiert. Wenn parseInt eine negative Zahl zurückgibt, so musst du zumindest das erste Zeichen abschneiden. Oder du prüfst das erste Zeichen auf ein Minuszeichen, wenn isNumeric true zurückgibt. Dann wäre zumindest dieses Textfeld, soweit ich das sehe, DAU sicher.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
D Leeres Textfeld nicht auslesen Java Basics - Anfänger-Themen 3
T Erste Schritte Textfeld übernimmt Größe nicht Java Basics - Anfänger-Themen 11
R Textfeld "sperren", Text darf nicht eingegeben werden - wie realisierbar? Java Basics - Anfänger-Themen 2
J Escape taste geht ohne cursor im textfeld nicht. Java Basics - Anfänger-Themen 4
G Textfeld in Frame geht nicht! :( Java Basics - Anfänger-Themen 3
B textfeld mit enter auslesen klappt nicht Java Basics - Anfänger-Themen 12
M Textfeld zurücksetzen Java Basics - Anfänger-Themen 3
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
N Zeichen in einem Textfeld zählen und hinterlegen Java Basics - Anfänger-Themen 6
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M Wie kann ich im JAVA-GUI im Textfeld ein Array speichern Java Basics - Anfänger-Themen 4
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
E Wert in Textfeld schreiben Java Basics - Anfänger-Themen 1
E Anzahl Datensätze in Textfeld Java Basics - Anfänger-Themen 5
N Auf TextFeld aus anderer Klasse zugreifen ohne es zu übergeben Java Basics - Anfänger-Themen 3
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
B Wert aus TextFeld in Canvas benutzen Java Basics - Anfänger-Themen 0
P Textfeld auslesen Java Basics - Anfänger-Themen 4
S TextFieldFilter - Wenn Textfeld leer dann setze 0 Java Basics - Anfänger-Themen 9
W Textfeld auslesen und in Liste speichern Java Basics - Anfänger-Themen 11
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J Problem mit String von Textfeld Java Basics - Anfänger-Themen 13
H Textfeld auslesen lassen Java Basics - Anfänger-Themen 11
N Textfeld- und Buttonerkennung einer Webseite Java Basics - Anfänger-Themen 6
M textfeld auslesen und in liste einlesen Java Basics - Anfänger-Themen 2
R GUI - Liste mit Textfeld und Radiobuttons Java Basics - Anfänger-Themen 8
C Buttons über Textfeld beschriften Java Basics - Anfänger-Themen 10
E Eingabemöglichkeiten für Textfeld begrenzen Java Basics - Anfänger-Themen 6
G String-Wert aus Textfeld auslesen Java Basics - Anfänger-Themen 9
D Canvas löschen über MouseEntered in Textfeld Java Basics - Anfänger-Themen 6
X Methoden [GWT] Dynamisches Textfeld PopUp erstellen Java Basics - Anfänger-Themen 6
F TextFeld überprüfen Java Basics - Anfänger-Themen 20
T text von textfeld auslesen und wieder reinschreiben Java Basics - Anfänger-Themen 10
Joew0815 Homepage Textfeld füllen und Button klicken Java Basics - Anfänger-Themen 10
Kenan89 TextFeld und Zahlen Java Basics - Anfänger-Themen 14
B Textfeld aufpoppen lassen Java Basics - Anfänger-Themen 15
S Werte aus einem Textfeld lesen Java Basics - Anfänger-Themen 13
H Focus auf Textfeld in JOptionPane Java Basics - Anfänger-Themen 2
D Interpreter-Fehler NumberFormatException Textfeld Java Basics - Anfänger-Themen 24
C Mit Java Textfeld einer externen Anwendung auslesen Java Basics - Anfänger-Themen 9
J Textfeld für Taschenrechner Java Basics - Anfänger-Themen 3
U Drag&Drop von Tabelle in Textfeld Java Basics - Anfänger-Themen 3
M Inhalt Textfeld prüfen Java Basics - Anfänger-Themen 4
G Exception - Unvollständige Eingabe im Textfeld Java Basics - Anfänger-Themen 2
F Textfeld: String (x,xx) --> double Java Basics - Anfänger-Themen 8
F Text aus Textfeld1 in Textfeld 2 kopieren Java Basics - Anfänger-Themen 5
D Problem mit TextFeld Array Java Basics - Anfänger-Themen 18
I auf Textfeld aus anderer Klasse heraus zugreifen Java Basics - Anfänger-Themen 2
W OOP Datum aus Access in Textfeld schreiben ohne Stunden/Minuten/Sekunden Java Basics - Anfänger-Themen 2
S Excel Textfeld auslesen Java Basics - Anfänger-Themen 6
1 Textfeld aktiv beim starten des Programms Java Basics - Anfänger-Themen 5
J double wert aus textfeld auslesen Java Basics - Anfänger-Themen 2
A Grafisches Textfeld zur Ausgabe Java Basics - Anfänger-Themen 3
H Textfeld Werte Java Basics - Anfänger-Themen 14
S Textfeld Wert auslesen Java Basics - Anfänger-Themen 2
A Mehrere verschieden Farben / Textfeld Java Basics - Anfänger-Themen 2
M Textfeld soll nur Zahlen erlauben Java Basics - Anfänger-Themen 26
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
E Textfeld aktualisieren Java Basics - Anfänger-Themen 3
L Textfeld Inhalt löschen Java Basics - Anfänger-Themen 2
G Exception bei leerem Textfeld Java Basics - Anfänger-Themen 12
Antoras Klasse in einem Textfeld zeichnen Java Basics - Anfänger-Themen 4
J Zahl in Textfeld hinzufügen Java Basics - Anfänger-Themen 10
P Tab in textfeld einfügen Java Basics - Anfänger-Themen 4
C Textfeld Eingabe überprüfen! Java Basics - Anfänger-Themen 12
B Textfeld auslesen Java Basics - Anfänger-Themen 5
R textfeld größe definieren Java Basics - Anfänger-Themen 2
R Textfeld und zahlen? Java Basics - Anfänger-Themen 4
C alle möglichen Datumseingaben im Textfeld abfangen Java Basics - Anfänger-Themen 12
A Ausgabe einer variablen im textfeld Java Basics - Anfänger-Themen 3
L Nur ganzzahlige Zahlen im Textfeld Java Basics - Anfänger-Themen 3
B Text per Button von ein textfeld in das andere? Java Basics - Anfänger-Themen 9
S voreingestellte zahl im textfeld Java Basics - Anfänger-Themen 2
H Text aus Textfeld per Actionlistener in Label ausgeben. Java Basics - Anfänger-Themen 6
V editierbares textfeld Java Basics - Anfänger-Themen 2
R Frage zur Länge von Textfeld und String Java Basics - Anfänger-Themen 4
A Ein TextFeld als mit Echtzeitausgabe? (Wie bei der Console) Java Basics - Anfänger-Themen 3
G textfeld nur mit zahlen Java Basics - Anfänger-Themen 2
G Textfeld zweimal Auslesen - Probleme Java Basics - Anfänger-Themen 6
V Tastatur Abfrage im Lisener für eine Auswahl üder Textfeld Java Basics - Anfänger-Themen 8
G AWT-Textfeld zeichenanzahl begrentzen Java Basics - Anfänger-Themen 4
G Wie Text in Textfeld zentrieren? Java Basics - Anfänger-Themen 2
W Aus Textfeld ein "MySQL Date" auslesen Java Basics - Anfänger-Themen 2
I Was in Swing, was in AWT zeichnen & Textfeld formatierba Java Basics - Anfänger-Themen 4
N in textfeld nur zahlen und punkl Java Basics - Anfänger-Themen 12
G Ausgabe des Java Ergebnisses in Textfeld Java Basics - Anfänger-Themen 17
S Array im Textfeld ausgeben Java Basics - Anfänger-Themen 7
B Leeres Textfeld, was nun. Java Basics - Anfänger-Themen 4
J Textfeld mit Eingabeprüfung Java Basics - Anfänger-Themen 10
Z Applet: Eingabe aus Textfeld auslesen und manipulieren Java Basics - Anfänger-Themen 3
N textfeld border . Java Basics - Anfänger-Themen 2
J Leeres Textfeld auslesen Java Basics - Anfänger-Themen 6
B Fokus auf ein Textfeld setzen? Wie? Java Basics - Anfänger-Themen 8
L Textfeld mit nur Zahlen? Java Basics - Anfänger-Themen 2
R GridBagLayout und JTextField: Textfeld ist viel zu schmal Java Basics - Anfänger-Themen 4
G Java Microedition TExtfeld in Variable einlesen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben