Frage

Ich mag einen neuen Event-Dispatch Thread in Swing schaffen, und ich habe Probleme, alle Verweise online zu finden, wie dies zu tun. Ich habe dies in .NET getan durch einen neuen Thread erstellen und ruft Application.run (...). Hat jemand dies getan? Ist es möglich, in Swing?

FYI der Grund, warum ich versuche, dies zu tun ist, weil ich ein Eclipse-Plug-in schreibe, und ich möchte Dialoge Pop-up, das am IDE modal nicht aber die modal (Blockierung) auf meine UI-Logik sind. Ich konnte dies mit nicht-modale Dialoge und Rückrufe erreichen, aber das erfordert den Aufwand meinen Code mit mehreren Threads zu machen. Ich werde das zurück, wenn die ehemaligen nicht möglich.

War es hilfreich?

Lösung

Ja, es ist möglich. Ich habe habe so mehr EDT Dispatch Threads Logik in Swing getan. Allerdings Nettoergebnis war, dass es nicht zuverlässig arbeiten.

(a) Alle JVMs arbeiten nicht gut mit mehreren EDT Threads (Synchronisationsprobleme in Grafiklogik in nativen Code-Rendering und solche, konnte IBM JVM mit mehreren EDT Threads, Sun JVM & Apple-JVM hat funktioniert)

(b) Swing-Rendering-Logik hat einige Fehler verursacht, dass zufällige Rendering-Fehler (zum Beispiel auftreten, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6727829 ).

Wie auch immer, dies zu tun erfordert grundsätzlich zur Festlegung von zwei AppContexts, die jeweils ihre eigenen EDT Gewinde haben.

Andere Tipps

Ich bin ein wenig verwirrt durch Ihre Frage, weil Sie Schwingen erwähnen, aber dann sagen Sie eine Eclipse-Plugin schreiben. Da die Frage Schaukel markiert ist, werde ich eine Swing-Antwort geben (aber wie CW veröffentlicht).

Es ist ein Event Dispatch Thread. Es gibt immer ein Event Dispatch Thread, es sei denn, es gar keine ist. Sie können nicht einen anderen erstellen.

Sie können jedoch ändern, um die ModalityType Ihre Dialoge oder die eines Fensters ModalExclusionType. In diesem Fall, wenn Sie das alles selbst schreiben würden, würden Sie Ihre Fenster der obersten Ebene des ModalExclusionType auf APPLICATION_EXCLUDE .

Aber noch einmal, ich sehe nicht, wie diese Ihnen helfen könnten, da Eclipse-SWT verwendet statt Schwingen.

Ich werde meine letzte Antwort auf Junk und neu beginnen.

In SWT können Sie eine href erstellen <= "http://help.eclipse.org/stable/nftopic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/ Shell.html "rel = "nofollow noreferrer"> Shell s (Fenster) oder benutzerdefinierte Dialog s, die nur an die Mutter modal sind durch während der Erstellung der SWT.PRIMARY_MODAL Stil Flagge vorbei.

Beachten Sie, dass Dialog ist eine abstrakte Klasse, so dass Sie Ihre eigenen erstellen müssten. Es ist wahrscheinlich nur einfacher Shell zu verwenden.

Edit:

Warum SWT? Denn das ist, was von Eclipse verwendet. Siehe:

scroll top