GUI Action Framework gesucht

DarthShader

Erfahrenes Mitglied
Hallo zusammen,

ich würde gerne ein GUI-Action Mechanismus in meinem Programm (Swing) verwenden, welches z.B. dem Verhalten in Eclipse ähnlich ist.

Dabei geht es mir darum, dass man gewisse "Aktionen" in eine Art Queue einreiht, die dann nacheinander abgearbeitet werden. Dies soll verhindern, dass sich GUI-Operationen gegenseitig "in die Quere kommen".

Man kennt dies z.B. von Eclipse: Man refreshed den Workspace, macht irgendeine andere Aktion (z.B. Programm starten) und es erscheint solch ein Dialogfenster, welches die ausstehende Refreshed-Aktion anzeigt. Danach wird die nächste Aktion automatisch ausgeführt.

Bevor ich nun anfange, sowas selbst zu schreiben (don't reinvent the wheel ;) ) - kennt vielleicht jemand solch ein Framework? Am liebsten quasi Stand-Alone, d.h. nicht als Teil der Eclipse RCP.

Über Eure Hilfe würde ich mich sehr freuen

Vielen Dank!
 
Hallo
Wenn ich dich richtig verstanden habe, suchst du genau das, was die AWTEventQueue sowieso schon macht: AWTEvents (Events aus anderen Threads wie z.B. MouseEvents) werden in den EventDispatchingThread eingeschleußt, der (zumindest unter Swing) für das Zeichnen und Erstellen der GUI zuständig ist.

Um die Events zu verarbeiten, müssen es entweder "normale" Events aus der JRE-API sein, oder du nimmst eine Klasse, die von java.awt.Container erbt und überschreibst die Methode processEvent(AWTEvent). Wichtig ist dabei, dass du alle anderen Events weiterleitest!

z.B.:
Code:
@Override
protected void processEvent(AWTEvent e)
{
	if( e instanceof ProgressEvent)
	{
		handleProgressEvent((ProgressEvent) e);
	}
	else super.processEvent(e);
}

wobei ProgressEvent hier mein eigenes AWTEvent ist, das ich genutzt habe, um eine Fortschrittsanzeige für eine rechenintensive Aufgabe zu aktualisieren. Die Methode handleProgressEvent() verarbeitet dann das Event.
 
Hallo genodeftest,

vielen Dank für Deinen Beitrag und sorry für meine sehr späte Antwort. Ja, den AWTEventQueue zu verwenden wäre natürlich eine Möglichkeit.

Was ich gesucht habe, ist aber ein etwas umfangreicheres Framework, das mir in dieser Hinsicht etwas Arbeit/Boilerplate-Code abnimmt. Zum Beispiel die Abstraktion vom eigentlichen Toolkit, die fertige Unterstützung für z.B. Warte-Dialoge auf andere Events, Priorisierung, Abbrechen von laufenden Tasks etc...

Ich weiß, dass man das alles mit AWTEventQueue oder auch dem SwingWorker selbst machen kann, aber genau darauf zielte ja meine Frage hinaus, ob es vllt. sowas fertiges schon gibt, was man nicht wieder selbst erfinden muss (immerhin zeigt Eclipse ja, dass es zumindest für SWT sowas eingebaut hat, und NetBeans kann das bestimmt auch - nur würde ich gerne eine "unabhängige" API haben wollen).

Habe mir grad mal

http://java.sun.com/developer/technicalArticles/javase/swingappfr/

angesehen, aber wie es scheint bietet auch das nicht, was ich suche. Naja ich werde mal weiter schauen, ansonsten muss ich etwas eigenes kleines dafür schreiben.
 
Zurück