Auf Thema antworten

zu a)

Wenn da echt kein invokeLater oder invokeAndWait im generierten Code steht (weder in der initComponents noch in irgendwo in der main-methode), dann ist das wohl ziemlich schlecht gemacht ^^ Einen tieferen Sinn gibt es dahinter nicht. GUI Komponenten erzeugt und verändert man im EDT, punkt.


zu b)

Warum? Keine Ahnung, ich weiss nicht genau was in welchen Abständen genau passiert im EDT. Aber das muss man ja auch nicht wissen. Ich glaube kaum dass es einen Unterschied gemacht hätte wenn du den Code in die initComponents gelegt hättest, wenn die Sache mit a) stimmt...


Generell ist es so: Bevor eine Komponente angezeigt wird (setVisible(true)) kann man sie erstellen und damit arbeiten auch außerhalb des EDT. Es ist nicht empfohlen, aber in 99,9% wird es trotzdem funktionieren. (Ganz einfach weil die Chance auf eine Race Condition gegen 0 geht, da der EDT mit Komponenten die nicht angezeigt werden eig. nix macht)

Während eine Komponente angezeigt wird funktionieren Änderungen außerhalb des EDT's aber zu gut 70% nicht.



Oben