Passworteingabe mit SWT und syncexec

deinertsche

Erfahrenes Mitglied
Hallo!

In einem SWT Programm benötige ich während des Programmflusses eine Passworteingabe vom User, die ich durch ein Pop-Up realisieren möchte.

Der normale Programmthread muss währenddessen warten, daher empfiehlt sich display.syncexec. Aber wie genau funktioniert das mit dem Rückgabewert?

Ich hatte es mir ungefähr so gedacht. Der Hauptthread ruft eine Methode namens askForPassword() aus der GUI Klasse auf und bekommt als return value das Passwort von der Methode zurückgeliefert. In der Methode askForPassword wird ein Eingabedialog erzeugt und wenn der User auf OK klickt wird der eingegebene Wert zurückgeliefert.

String password = gui.getDisplay().syncExec(
new Runnable() {
public void run() {
return askForPassword();
}
});

Das Problem wird sofort deutlich: run ist eine void Methode und kann daher keinen Wert zurückgeben. Aber wie kann man mit syncexec einen Wert zurückgeben?
 
Du kannst z.B. eine Klasse von Runnable ableiten, die n String fürs Passwort hat.

class MyRunnable implements Runnable {
String password;
...deine Methoden...
}

dann erzeugst du eine Instanz davon, benutzt sie, um das Passwort zu verlangen, speicherst es unter 'password' und kannst es nacher da auch wieder rauslesen...

dann muss man den EingabeDialog so machen, das er den MainThread blockiert... So wie das beispielsweise die Klasse ProgressMonitorDialog resp. Dialog machen kann...
 
Zuletzt bearbeitet:
Zurück