JOptionPane blockt Änderungen an GUI?

... komplette Frage anzeigen

3 Antworten

Beachte die Reihenfolge der Anweisungen. Erst muss der Text in das Textfeld geschrieben, danach das JOptionPane geöffnet werden.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Eurocrafter
27.11.2016, 14:01

Ok, moment. Bei einer JOptionPane funktioniert es komischerweise wieder.

Allerdings kommt das Problem auch bei einem Socket vor.

Wenn ich bei einem Klick auf einen Button erst den Text in textfield ändern möchte und danach mit

Socket client = new Socket("localhost", 12345);

eine Verbindung zu einem Server aufbauen möchte, bleibt der Button solange gedrückt, bis letztendlich über den Catch-Block

JOptionPane.showMessageDialog(null, "Server nicht erreichbar");

angezeigt wird. Und erst dann wird auch der Text in textfield geändert.

Daher wäre die Frage, wie man erst den Text in textfield ändern kann, bevor das Programm versucht, die Verbindung aufzubauen.

Hier mal die pastebin: http://pastebin.com/tBGA4zyE

0

Soweit ich weiß werden Änderungen an der GUI erst nach dem abarbeiten der Events angezeigt. Generell solltest du auch im Event Thread keine langwierigen Operationen ausführen und diese an andere Threads delegieren.

Wenn die dann widerum mit der GUI agieren können, musst du das in ein Runnable einkapseln und mittels der SwingUtilities.invokeLater() funktion im richtigen Thread ausführen lassen.

Antwort bewerten Vielen Dank für Deine Bewertung

ja klar ich weiß wie das geht

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Eurocrafter
27.11.2016, 12:31

Jaja... sei leise :D 

1