PLZ-Feldlänge eingrenzen

JonnieWalker

Bekanntes Mitglied
Hi Leute, hoffe euch geht es gut.

Neue Frage:

Ich hab ein Textfeld PLZ und wollte das wenn jemand mehr als 5 zahlen eingibt
mir ne Meldung kommt dementsprechend:
Hier ist meine Idee aber i-wie klappts nicht
Danke:

Java:
if(tfPlz.getText().length()> 5){
   JOptionPane.showMessageDialog(this, "Bitte eine fünstellige PLZ eingeben");
  }
  else{
     return;
}
 

Semox

Bekanntes Mitglied
Hallo labi

Mensch, mir geht es prima! Und Dir? Ewig nichts von Dir gehört... :toll:

Also wann soll denn der Hinweis kommen? Während der Eingabe? Nach dem Absenden?

Begrenze die Feldlänge doch einfach auf eine maximale Anzahl von Zeichen... Steht ganz prima in der Java API.

JTextField(int columns) <---

Viele Grüße,
Semo
 

KrokoDiehl

Top Contributor
Die "columns" bestimmen nur die Größe eines JTextFields, nicht aber die Maximalzahl an Zeichen.
Hier ist eine Lösung zur Begrenzung von Eingabelängen in der Forums-FAQ (letzter Post). Wenn du aber viel stärker eine PLZ-Formatierung erzwingen willst, solltest du dir mal das JFormattedTextField anschauen.
 

JonnieWalker

Bekanntes Mitglied
Hi, ja danke mir gehts so lala das Wetter macht einem zu schaffen:S

Ich habs mit dem Code im KeyListener gemacht es klappt nach der Enter eingabe, nur
es wäre ja besser weil da noch mehr felder sind wenn ich die tabtaste betätige. oder am besten
der user kann nur 5 zahlen eingeben und ohne ne fehlermeldung oder sonst was anzuzeigen.

am besten ich würd es gerne so realisieren das der user einfah nur 5 zahlen eingeben kann und nicht mehr und auch keine fehlermeldung kommt:).
 

JonnieWalker

Bekanntes Mitglied
Ich hab das jetzt mal gemacht. es funktioniert.
nur ein kleines Problem gibt es.
ich kann nur 5 zahlen eingeben so wie es sein sollte
nur wenn ich z.B. 12345 eingebe dann die 6 drücke,wird meine 5 mit der sechs überschrieben!
wieso???

hier der code:

Java:
         tfPlz.getCaretPosition();
            if(tfPlz.getText().length()>4) {
            System.out.println("jetzt sollte es kürzer werden");
            String plz = tfPlz.getText();
            plz=plz.substring(0,4);
            tfPlz.setText(plz);
    
        }
 

Semox

Bekanntes Mitglied
Probiere es doch mit einer while-Schleife, die solange läuft, bis die Anzahl der freien Zeichen erschöpft ist (4 - dekrementieren). Falls jemand doch was anderes als eine Zahl (parseInt --> false) eingibt, dann fängt die Schleife wieder von vorne an prüft ob beim nächsten mal wieder eine Zahl (parseInt) eingegeben wurde, sonst wird dieses Zahlzeichen in einen String gepackt. Dann sollte die Schleife beendet werden und die PLZ in einen Speicher gepackt werden.

Wie wäre es damit?

Viele Grüße,
Semo
 

Neue Themen


Oben