JOptionPane.showMessageDialog() bleibt hängen

Status
Nicht offen für weitere Antworten.
T

tuxedo

Gast
Hallo,

ich rätsel gerade warum mich die JOptionPane mich einmal mag, und einmal nicht....

Folgendes:

Ich habe eine Client-Server-RMI-Anwendung. Ein Client schickt dem anderen Client eine Nachricht. Die Client-Klasse ist recht primitiv gestrickt und erbt schlicht und einfach von JFrame. Die zu sendende Nachricht nehme ich so auf:

Code:
	/**
	 * This method initializes sendMessageItem	
	 * 	
	 * @return javax.swing.JMenuItem	
	 */
	private JMenuItem getSendMessageItem(final int targetUserId) {

			sendMessageItem = new JMenuItem();
			sendMessageItem.setText("send message to user");  // Generated
			sendMessageItem.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					String msg = JOptionPane.showInputDialog("Please enter a short message", "");
					client.sendMessage(targetUserId, msg);
				}
			});
		return sendMessageItem;
	}

Die Nachricht geht auchbeim Server ein und wird an den Ziel-Client weitergereicht. Das geschieht mittels einer Callback-Klasse die der Server vin jedem Client hat. Der aufruf der Message-methode in der Callback-Klasse wird an die JFrame-Klasse weitergeleitet:

Code:
	public void showMessage(String title, String msg) {
		System.out.println("start");
		JOptionPane.showMessageDialog(null, msg, title, JOptionPane.INFORMATION_MESSAGE);
		System.out.println("stop");
	}

So, auf den Console seh ich insgesamt wie die Nachricht vom Client aufgenommen wird, beim Server eingeht und vom Server an den Zielclient weitergereicht wird. Am Zielclient krieg ich dann das "start" auf der Console und ein Febnster erscheint.

Aber der modale "showMessageDialog" wird nicht korrekt gezeichnet. Ich krieg nur den Titel des Fensters korrekt angezeigt. Der Rest des Fensters setzt sich aus übrlagerungen darunterliegender Fenster zusammen. Kein Button und nix ist erkennbar. Die Anwendung bleibt hängen.

Ich hab auch shcon statt dem "null" im Methodenaufruf mit "this" probiert. ABer ich krieg's nicht gebacken.
In meiner Verzweiflung hab ich dann auch probiert, statt dem Message-Dialog, nochmal den Input Dialog einzublenden. Aber sogar der "versagt".

CPU-Last ist deutlich <1% ... Weitere Threads oder so hab ich nicht die das blockieren könnten. Hat einer nen Plan warum das hängen bleibt?

- Alex
 
T

tuxedo

Gast
Hmm, hab mal eben schnell nen eigenen JDialog zum Anzeigen der Nachricht gebastelt. Sobald ich diesen modal mache, hab ich den gleichen Effekt. Schalte ich das Modal-Flag ab, funktionierts.

*seltsam*


- Alex
 
S

SlaterB

Gast
(jetzt hast du ja schon geantwortet und das Topic steht nicht mehr bei den Unbeantworteten
-> auch Platz für belanglose Nachfragen: )

wer macht denn diesen ominösen Aufruf, wie kommt die Kommunikation vom Server zum Client zu Stande,
irgendein Framework, oder hast du da einen eigenen Thread laufen?

kannst du diesen Aufruf auch simulieren?
oder ist bei eigenen Aufrufen alles in Ordnung?
 
T

tuxedo

Gast
Hab ja oben schon geschrieben: Ich verwende RMI in einer recht simplen Konstellation. Also kein weiteres Framework oder so.
Der Aufruf der "showMessage" Methode wird via RMI vom Server getriggert.

Eigene Threads hab ich keine laufen. Nur eben das was RMI selbst benötigt.

Ich wer'd mal mit dem "künstlichen" aufrufen der methode versuchen. Vielleicht verwurschtelt RMI da ja etwas.

- Alex

[update]

Tatsache, sobald ich nicht von MRI getriggert diese Methode aufrufe klappt's.

[update2]

Wenn ich wieder mit modual arbeite und den RMI-Server beende, dann wird der Inhalt des Dialogs auf einmal angezeigt. Kann mir jetzt jemand verraten wieso das so ist und wie man das Problem löst?
 

HLX

Top Contributor
Vielleicht ein Multithreading-Problem mit Swing.

Kannst du die Anwendung debuggen?

Falls du Eclipse verwendest kannst du einen Breakpoint im Dialogaufruf setzen und schauen, in welchem Thread sich die Anwendung zur Zeit befindet.

Ein weiterer Versuch wäre, den Dialogaufruf in ein Runnable zu packen und über "SwingUtilities.invokeLater" aufzurufen. Dann wird der Teil auf jeden Fall, so wie es sein sollte, in der EventQueue ausgeführt.
 
T

tuxedo

Gast
Ja, das wäre eine Idee gewesen. Aber für meinen Fall ist "nicht-modual" vielleicht doch geschickter. Schließlich können mehrere Nachrichten (nahezu) gleichzeitig eintreffen, und vielleicht will der Anwender die Nachricht parallel zur Anwendung geöffnet lassen. Das blockieren der Anwendung durch das Modal-Flag wäre von daher etwas unpassend.

Aber rein interessehalber schau ich mir die Tipps mal genauer an.

Danke mal soweit,

Gruß
Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M "JOptionPane.showMessageDialog" funktioniert nicht in jar-Archive. Allgemeine Java-Themen 4
J JOptionPane - Leereingabe, Wiederholen Allgemeine Java-Themen 10
G JProgressBar in JOptionpane? Allgemeine Java-Themen 16
Aruetiise Swing JOptionPane ohne denn Thread zu pausieren Allgemeine Java-Themen 1
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
M Hilfe mit JOptionPane Allgemeine Java-Themen 2
D JOptionPane nur 1 Input möglich? Allgemeine Java-Themen 6
D Frage zu JOptionPane Allgemeine Java-Themen 2
T IF Abfrage + YES_NO Option mittels JOptionPane Allgemeine Java-Themen 3
G joptionpane problem Allgemeine Java-Themen 8
clemente Code OK? - JOptionPane ruiniert KDE Sitzung Allgemeine Java-Themen 5
G Mouselistener geht aber danach Fehler bei JOptionPane Allgemeine Java-Themen 4
U JFrame, JOptionPane - vor dem Schließen Benutzer fragen Allgemeine Java-Themen 10
U html in JOptionPane - wie? Allgemeine Java-Themen 5
C JOptionPane, Parentframe übergeben wie? Allgemeine Java-Themen 5
S showMessageDialog ohne Buttons? Allgemeine Java-Themen 4
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
Salo JDK installieren java home bleibt nicht Allgemeine Java-Themen 9
H Thread bleibt stehen bei jar in jar Allgemeine Java-Themen 1
T SE Development Kit 8 73 installer bleibt stehen Allgemeine Java-Themen 5
T Programm bleibt ohne Fehler stehen Allgemeine Java-Themen 4
A Bleibt toString() konstant? Allgemeine Java-Themen 8
R JasperReport bleibt leer Allgemeine Java-Themen 3
K Schreiben von Bildern: Bild bleibt leer Allgemeine Java-Themen 7
D seit sytemabsturz bleibt eclipse hängen beim starten Allgemeine Java-Themen 3
B Spiel bleibt hängen Allgemeine Java-Themen 3
E JButton bleibt in der JTable Allgemeine Java-Themen 2
MQue JFrame bleibt hängen Allgemeine Java-Themen 3
G Es bleibt stehen ! Allgemeine Java-Themen 8
R Wert in Hashtable ändern (Key ändern, Value bleibt) Allgemeine Java-Themen 3
B Frame schließt sich aber VM bleibt am Leben Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben