G
Guest
Gast
Hallo,
mein Problem ist folgendes: ich habe eine RMI-Andwendung geschrieben und möchte, dass ein Wartedialog angezeigt wird, wenn mein Client eine Anfrage an den Server stellt.
Im konkreten Fall handelt es sich um einen Login-Dialog. Der Client startet, der Login-Dialog popt auf und der User muss seine Daten eingeben. Beim Klick auf "Login" bekommt er einen Wartedialog zu sehen, bis der Client die Auswertung vom Server erhält.
Das funktioniert soweit auch:
Das Problem ist, dass es zu einem Durcheinander beim setVisible kommt. Ich habe so oftmals den Effekt, dass bei einem falschen Login mein Wartedialog nicht verschwindet und der Login-Dialog unter diesem erscheint.
Durch den Einsatz der sleep-Funktion konnte ich das zwar in dem Fall beheben aber das Problem tritt wieder auf, wenn ich den "Access denied" - Dialog einsetze. Dann ist der Effekt, dass mein Login-Dialog mit gedrücktem Login-Button wieder erscheint, er scheint zu hängen.
Meine Vermutung ist wie gesagt, dass die aufeinanderfolgenden setVisible-Anweisungen falsch umgesetzt werden und da die Dialoge alle modal sind hängt dann der Login-Dialog irgendwie. Es wird wesentlich besser, wenn ich die sleep-Funktion einbaue aber es tritt leider trotzdem noch auf.
Sicherlich ist es nur ein kleines Problem, wäre echt super, wenn mir jemand weiterhelfen kann!
Philipp
mein Problem ist folgendes: ich habe eine RMI-Andwendung geschrieben und möchte, dass ein Wartedialog angezeigt wird, wenn mein Client eine Anfrage an den Server stellt.
Im konkreten Fall handelt es sich um einen Login-Dialog. Der Client startet, der Login-Dialog popt auf und der User muss seine Daten eingeben. Beim Klick auf "Login" bekommt er einen Wartedialog zu sehen, bis der Client die Auswertung vom Server erhält.
Das funktioniert soweit auch:
Code:
public class Actions extends Thread implements Runnable
{
static int actionID;
Actions( int ID ){ actionID = ID; }
public void run()
{
int result = 99;
// switch actionID and run corresponding action
switch( actionID )
{
case 1: // check USER-LOGIN
// [....] Übergabe von Username und Password an den Server, Ergebnis wird in "result" gespeichert [...]
Gui.myWaitDialog.setVisible( 0 );
// check result and show dialog if necessary
switch( result )
{
case 0: // Login fehlgeschlagen
// Main.showCustomError( "Access denied." );
Gui.myLoginDialog.setVisible( 1 );
break;
case 1: // Login ok
// login
break;
case 99: // keine Verbindung
// Main.showCustomError( "Could not connect to database." );
break;
}
break;
case 2:
break;
}
// wenn das implementiert wird, klappt es
//try { sleep( 100 ); } catch (InterruptedException e) { e.printStackTrace(); }
}
}
Das Problem ist, dass es zu einem Durcheinander beim setVisible kommt. Ich habe so oftmals den Effekt, dass bei einem falschen Login mein Wartedialog nicht verschwindet und der Login-Dialog unter diesem erscheint.
Durch den Einsatz der sleep-Funktion konnte ich das zwar in dem Fall beheben aber das Problem tritt wieder auf, wenn ich den "Access denied" - Dialog einsetze. Dann ist der Effekt, dass mein Login-Dialog mit gedrücktem Login-Button wieder erscheint, er scheint zu hängen.
Meine Vermutung ist wie gesagt, dass die aufeinanderfolgenden setVisible-Anweisungen falsch umgesetzt werden und da die Dialoge alle modal sind hängt dann der Login-Dialog irgendwie. Es wird wesentlich besser, wenn ich die sleep-Funktion einbaue aber es tritt leider trotzdem noch auf.
Sicherlich ist es nur ein kleines Problem, wäre echt super, wenn mir jemand weiterhelfen kann!
Philipp