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:
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
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