GUI hängt

Status
Nicht offen für weitere Antworten.
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:


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

Philipp
 

Wildcard

Top Contributor
Hmm, das hab ich wohl überlesen.
Dann verstehe ich aber nicht warum du Threads und sleep brauchst ???:L
 
G

Guest

Gast
weil der wartedialog eine animation beinhaltet. ohne thread würde der dialog einfrieren und das will ich nicht, also lasse ich alle aktionen in einem eigenen thread laufen.
 

Wildcard

Top Contributor
Mach mal alle Anweisungen die direkt oder indirekt Einfluss auf die GUI haben in ein SwingUtillities.invokeLater.
Möglich das du ein Thread Problem hast.
 

MatthiasKnorr

Aktives Mitglied
Also ich hab meine Dialoge immer threadfähig gemacht, nicht die Aktion die der Benutzer ausführt, in deinem Fall der Login. Dabei hatte ich auch noch nie solche Probleme gehabt.
Mein Vorschlag, erweitere deine eigene Dialog Klasse mit Runnable und lass nur den Dialog in einem neuen Thread laufen.

Grüße,
Matthias
 
G

Guest

Gast
super, danke! lag tatsächlich am invokeLater :toll:
da hätte ich auch mal selbst drauf kommen können .... naja ... *g*

tolles forum hier, ohne würde ich teilweise verzweifeln! :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Javafx hängt sich auf AWT, Swing, JavaFX & SWT 31
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
H Swing BufferedReader.close() hängt im SwingWorker AWT, Swing, JavaFX & SWT 1
D JavaFX Anwendung hängt sich permanent auf AWT, Swing, JavaFX & SWT 6
T Swing Programm hängt sich auf! AWT, Swing, JavaFX & SWT 23
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
J Programm hängt sich bei Log In auf AWT, Swing, JavaFX & SWT 1
C JFileChooser hängt bei Ausführung mit Terminal AWT, Swing, JavaFX & SWT 2
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
F Grafik hängt sich auf AWT, Swing, JavaFX & SWT 20
P GUI hängt AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Desktop.open(file) hängt AWT, Swing, JavaFX & SWT 4
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
C Swing JTextfield hängt sich bei Eingabe auf AWT, Swing, JavaFX & SWT 6
C SWT Gui Thread hängt sich auf AWT, Swing, JavaFX & SWT 3
H Swing UndoManager hängt beim Redo AWT, Swing, JavaFX & SWT 3
R GUI hängt während Programm läuft AWT, Swing, JavaFX & SWT 7
D JApplet hängt im Browser fest AWT, Swing, JavaFX & SWT 5
P JTree insertNodeInto hängt das Item in die "Luft" AWT, Swing, JavaFX & SWT 8
E Swing-Gui hängt scheinbar AWT, Swing, JavaFX & SWT 14
J JTextArea#replaceRange() - Wo hängt der Hammer? AWT, Swing, JavaFX & SWT 4
D MessageDialog hängt AWT, Swing, JavaFX & SWT 3
S statusleiste bleibt leer und gui hängt AWT, Swing, JavaFX & SWT 3
B drawImage() hängt! AWT, Swing, JavaFX & SWT 18
M Rechner/JVM hängt ab ca. 247 Frames AWT, Swing, JavaFX & SWT 8
T Java Runtime.exec per JButton auslösen -> Programm hängt AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben