In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das?

Fischi2k

Mitglied
Hallo allerseits,

ich lese durch Klick auf einen Button Nutzereingaben ein. Diese eingelesenen Daten werden weitergeleitet zu entsprechenden Methoden. Wie kann ich denn die eingegebenen Daten prüfen und nur, wenn sie bestimmte Kriterien erfüllen, diese an die Methode weiterleiten?

Über den ActionListener rufe ich die folgende Methode auf:
Java:
	public void registrieren() {
		
		String patternAlphabet = "[a-zA-Z]*";
		String patternPLZ = "[0-9]5";
		String patternHNr = "[0-9]*";
			
		final String vName = textfield_vName.getText();
		final String nName = textfield_nName.getText();
		final String pw = passwordfield_pw.getText();

	      boolean ok = shopV.registrierenMitarbeiter (vName, nName, pw);
	      if (ok == true) {
	          shopV.speicherMitarbeiter();
	          System.out.println("Angelegt:" +vName + nName + pw);
	          textfield_vName.setText("");
	          textfield_nName.setText("");
	          passwordfield_pw.setText("");
	          String info = ("Hinzufügen war erfolgreich. "  +"#" +"#"+ "Neu registriert hat sich " +"#" +vName + " " +nName);
	          String ausgabe = info.replace("#", "\n");
				inform(ausgabe);
		
	      }
	      if (!(ok == true)) {
	      	String info = ("Beim Registrieren ist etwas schief gelaufen.");
	      	String ausgabe = info.replace("#", "\n");
				inform(ausgabe);
	      }
		
	}

Da werden sämtliche Daten, auch "leere Eingaben" erfasst, was so natürlich nicht passieren darf.

Ich habe mal einige Patterns erstellt, die ich den Eingaben gegenüberstellen möchte:
Java:
String patternAlphabet = "[a-zA-Z]*";
String patternPLZ = "[0-9]5";
String patternHNr = "[0-9]*";

Im Prinzip möchte ich die Textfelder einlesen und prüfen, ob sie korrekt sind. Falls nciht, soll NICHT die Methode shopV.registrierenMitarbeiter aufgerufen werden, sondern eine Meldung an eine JTextArea im selben Fenster gesendet werden.

Für einen Tipp oder Hilfe bin ich sehr dankbar.

Grüße
 
indem du im ActionListener abfragst ob die Eingaben stimmen und wenn nicht die Methode registrieren einfach nicht aufrufst?

Gruß

Claus
 
Thallius, zunächst vielen Dank erstmal. Manchmal ist man scheinbar zu sehr "drin", als dass man auf die einfachsten Sachen kommt.

Ich habe es nun umgesetzt und im Prinzip funktioniert es auch, aber ist das der "richtige" und "elegante" Weg?

Hier der ActionListener:

Java:
	class button_registrierenListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {
						
			String patternAlphabet = "[a-zA-Z]*";
//			String patternPLZ = "[0-9]5";
//			String patternHNr = "[0-9]*";
						
			String vName = null;
			String nName = null;
			String pw = null;
			
			if ((textfield_vName.getText().length() > 0) && (textfield_vName.getText().matches(patternAlphabet))) {
				vName = textfield_vName.getText();
				label_vorname.setForeground(Color.black);
			    }
			else {
				vName = "";
				label_vorname.setForeground(Color.red);
			}
			
			if ((textfield_nName.getText().length() > 0) && (textfield_nName.getText().matches(patternAlphabet))) {
				nName = textfield_nName.getText();
				label_nachname.setForeground(Color.black);
			    }
			else {
				vName = "";
				label_nachname.setForeground(Color.red);
			}	
			
			if ((passwordfield_pw.getText().length() > 0) && (passwordfield_pw.getText().matches(patternAlphabet))) {
				pw = passwordfield_pw.getText();
				label_passwort.setForeground(Color.black);
			    }
			else {
				vName = "";
				label_passwort.setForeground(Color.red);
			}
			
			if (vName.length() > 0 && nName.length() > 0 && pw.length() > 0) {
				registrieren(vName, nName, pw);
			}
			
			else {
				inform("Sie haben falsche Eingaben getätigt.");
			}

		}

Kann/sollte man das so machen?
 

Zurück
Oben