Derzeit ist es ja so, dass die Plugin-Mainclass von einer Subklasse von JInternalFrame erbt und so zum Hauptprogramm geadded wird. Dadurch kann ich dabei auf den EDT natürlich nicht verzichten, weil er ständig gebraucht wird. Und wenn ich bei jeden Listener-Aufruf etc. einen Thread starte, wird das vor allem zusammen mit den Aufrufen der EventQueue für GUI-Änderungen sogar noch unlesbarer. :autsch:
Eine Idee hätte ich dazu schon: Bei Programmstart im EDT einen neuen Thread starten, und ihm eventuell mit join blockieren damit sie sich nicht in die Quere kommen. Dieser hohlt sich per Toolkit#getSystemEventQueue()#getNextEvent() in einer Schleife alle Events, und dispatcht sie so wie sie es erwarten. (ActionEvent z. B. dispatch() aufrufen, Component-Events per dispatchEvent am Source weiterleiten etc.). Bevor er das jedes mal macht updatet er eine Variable mit Timestamp damit er überprüft werden kann. Sobald der erste Thread festhängt startet der Kontrollthread einen neuen Dispatcher und setzt bei den alten eine boolean falls er doch irgendwann nochmal weiterarbeitet, damit er die Schleife verlässt und stirbt.
Das würde mich testweiße interessieren, aber ich denke ein Einbau wäre eine schlechte Idee.