Passwortabfrage entsprechend zu InputDialog

Status
Nicht offen für weitere Antworten.
Hallo zusammen,

ich programmiere gerade eine Software für meine Maturitätsarbeit und bin dabei auf eine Frage gestossen.

Mein Programm arbeitet mit einer Datenbank im Hintergrund und zwei Benutzern mit unterschiedlichen Rechten, die auf dieses Datenbanksystem zugreifen. Die Klasse welche die Verbindung aufbaut bekommt von der statischen Klasse 'UserSelector' den entsprechenden User. (Je nachdem in welchem Modus, das Programm ist, ist dies ein anderer User.)

Ich habe es nun so eingerichtet, dass wenn über die Methode 'getPassword()' der Klasse 'UserSelector' das Passwort erfragt wird, dieses jedoch noch nicht eingegeben wurde, ein InputDialog angezeigt wird, indem das Passwort eingeben wird und die Methode danach das Passwort mit return zurückgibt.

Der Code sieht folgendermassen aus:
Code:
/**
	 * @return String Gibt das Passwort des entsprechenden Users zurück, ggf.
	 *         wird das Passwort zuerst über einen InputDialog vom Benutzer
	 *         angefordert.
	 */
	public static String getPassword()
	{
		if (Hauptfenster.prgmModus == Hauptfenster.MOD_MODUS)
		{

			password = JOptionPane.showInputDialog("Passwort für " + UserSelector.getUser() + " eingeben.");
			return password;
		}
		else
		{
			return Settings.getViewPassword();
		}
	}

Nun funktioniert dieses eigentlich hervorragend, nur ist es so, dass im InputDialog, das Passwort in einem normalen Textfeld eingegeben wird und nicht in einem Passwortfeld, damit man das Passwort nicht sehen kann.

Das Problem liegt nun da, dass ich es nicht hinkriege, das gleiche mit einem Passwortfeld zu machen.

Ich habe mir überlegt, dass ich kurz eine Klasse erstelle, mit einem PasswordField und einem Label, und zwei Buttons. Zudem die Methode getPassword().

Im oben abgedruckem Code würde dann anstatt Zeile 11 und 12 etwa dieser Text stehen.

PasswordInsert pwInsert = new PasswordInsert("Bitte das Passwort eingeben!");
String password = pwInsert.getPassword();
return password;

Wenn ich dieses aber so mache, wird das Objekt pwInsert zwar angezeigt, aber sofort die nächste Zeile ausgeführt und dabei das Passwort erfragt, das aber gar noch nicht eingegeben wurde im PasswordInsert.

Hat da jemand von euch eine Lösung?

--
Raphael Fuchs
 

wayne

Bekanntes Mitglied
des problems lösung sitzt in der implementierung deiner klasse PasswordInsert. die buttons, das label und das passwordfield müssen ja auf was drauf sitzten. ich vermute mal, daß du hierfür entweder einen JFrame oder einen JDialog verwendet hast. letzteres wäre die optimalere wahl, sprich, wenn du einen JFrame verwendest, schreibs lieber nach JDialog um. der JDialog besitzt die option ihn modal darzustellen. das heißt, daß sobald show() aufgerufen wird, bleibt die verarbeitung im hintergrund stehen und wartet darauf, daß der dialog wieder geschlossen wird. du müsstest dann nur noch abfragen, welcher der beiden buttons gedrückt wurde, um ihn zu schließen.

natürlich funktioniert das ganze auch mit einem JFrame. allerdings wirst du immer das problem haben, daß man den zunächst in den hintergrund schieben kann um im vordergrund mit der verarbeitung fortzufahren.

viel erfolg

wayne
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben