In einer "seriösen" Java-GUI-App haben Sie Modelle hinter vielen Ihrer GUI-Elemente: A DocumentModel
unterstützt zum Beispiel eine JEditorPane
oder eine ListModel
hinter einer JList
.Ist es in Ordnung, ein Modell außerhalb des Swing-Arbeitsthreads zu ändern?
Es wird uns immer gesagt, dass wir keine GUI-Änderungen von außerhalb des Swing-Worker-Threads vornehmen und SwingUtilities.invoke...()
dafür geben müssen. Gut, damit kann ich leben! Es ist sicherlich notwendig (und funktioniert gut), wenn Attribute von GUI-Komponenten direkt geändert werden.
Im Idealfall werden die meisten von meiner GUI sichtbaren Änderungen für Modelle und nicht für JComponents gelten. Aber weil sie GUI-sichtbar sind, "zählen" sie als GUI-Änderungen? I.e. Ändern Sie Ereignisse und Listener bieten die notwendige Entkopplung, oder müssen Modelländerungen auch in invoke...()
gewickelt werden?
Wahrscheinlich alter Hut, um Pros zu schwingen, aber ich war nicht in der Lage, irgendeinen Hinweis zu finden, der eindeutig auf die eine oder andere Weise aussagt.
-1: Nicht die Antwort, die ich hören wollte! (Nur Spaß, +1) Danke! –
In Bezug auf das Debugging von Swing-Threads empfehle ich dringend diesen Link: http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html Der CheckThreadViolationRepaintManager hat mir viel Zeit gespart. –
Swing-Text bewirkt * einige * Verschiebung von Ereignissen zum EDT. Natürlich macht es nur ein größeres Durcheinander. –