# AWT Komponenten in JavaFX einbetten



## Alex33 (12. Sep 2012)

Hallo Leute,

ich habe ein kleines Problem. Ich erstelle für meine Arbeit einen grafischen Editor um 3D Umgebungen bauen zukönnen. Dazu möchte ich eigentlich JavaFX für die GUI benutzen. Jetzt gibt mir die 3D Engine aber lediglich die Möglichkeit auf ein AWT Canvas zu zeichnen. 

Also hier die eigentliche Frage: Kann ich ein AWT Canvas irgendwie in JavaFX 2.2 einbinden? Bin hier nämlich langsam am verzweifeln.

Schöne Grüße,
Alex


----------



## Marco13 (12. Sep 2012)

Eine schnelle Websuche liefert erstmal den entmutigenden Hinweis auf JavaFxExample - vlcj - Java Framework for the vlc Media Player - Google Project Hosting : "Since it is not possible to embed an AWT Canvas in a JavaFX application, you must..."

Vermutlich werden die sich schon Mühe gegeben und sich genau informiert haben, aber ... eine definitive Aussage ist natürlich schwierig...


----------



## Alex33 (12. Sep 2012)

So ein Mist!

Danke für die Antwort. Dann bleibt mir wohl nichts anderes übrig als mich in der Engine soweit auszutoben, dass das ganze auf einem JavaFX Canvas ausgegeben wird.


----------



## Paddelpirat (12. Sep 2012)

Der Link verweist aber noch auf JavaFX 1.x oder?

Was du evtl. machen Könntest, wäre eine Swing-Applikation in der du halt auch deine AWTCanvas anzeigst und anschließend bindest du die JavaFX 2 GUI über JFXPanels ein. Wie gut das funktioniert weiß ich nicht, hängt wohl auch davon ab wie stark du die beiden Sachen miteinander verknüpft haben möchtest.

JavaFX for Swing Developers: Integrating JavaFX into Swing Applications | JavaFX 2 Tutorials and Documentation


----------



## Alex33 (12. Sep 2012)

Ist zumindest schon etwas älter der Link, habe aber auch keine neuere Aussage im Netz gefunden die dem widerspricht.

Über diese Möglichkeit hatte ich auch schon nachgedacht, hoffte aber halt das es auch eine einfachere/elegantere Variante gibt.


----------



## Marco13 (12. Sep 2012)

Naja, der Link sollte wie gesagt kein Grund sein, gleich aufzugeben (ich hatte auch nicht gesehen, dass er schon älter ist - vielleicht hat sich da bei den neueren FX-Versionen was getan, bin da bei den technischen Details vielleicht auch nicht auf dem neuesten Stand). Du hattest explizit von AWT geredet: Sehe ich es richtig, dass es tatsächlich um einen (heavyweight) AWT-Canvas (z.B. von JOGL oder LWJGL) geht? Das könnte es noch schwieriger machen, aber auch DAS soll kein Grund sein, aufzugeben


----------



## Paddelpirat (12. Sep 2012)

Nein wirklich widersprechen möchte ich auch nicht, war nur eine Anmerkung.
Da es nicht mal möglich ist Swing in JavaFX einzubetten, sondern nur umgekehrt die Möglichkeit JavaFX in Form eines JFXPanels in Swing einzubetten wird das mit der AWTCanvas erst recht nicht gehen.

Was ist das denn für eine 3D-Engine? So etwas selbst dann auf JavaFX zu portieren ist wohl auch keine schnell erledigte Aufgabe...


----------



## Marco13 (12. Sep 2012)

Naja, mit dem JFXPanel hätte man schon die Möglichkeit, z.B. den Hauptbereich eines JFrames mit einem AWT-Canvas zu füllen, und das JFXPanel für die (komplett davon getrennten) Bedienelemente zu verwenden, aber falls sich da irgendwas "überlappen" soll, sieht's wirklich düster aus. (Auch das sollte eigentlich inzwischen besser gehen, aber ... naja...)


----------



## Paddelpirat (12. Sep 2012)

Würde mal vermuten, dass Oracle da nicht mehr viel dran macht. Die wollen die Leute ja eher in Richtung JavaFX lenken. Daher gibt es ja auch kein SwingPanel, welches man in JavaFX einbetten kann, sondern nur die Möglichkeit bestehende Swing-Applikationen mit JavaFX "aufzuwerten".


----------



## Alex33 (12. Sep 2012)

Von Aufgabe war hier auch nirgendwo die Rede. Die Engine ist die jMonkeyEngine3. 
Und nein, hab mich da gerade mal versucht durch den Code zu wühlen bis zum Ursprung des verwendeten AWTCanvas und das alles zu ändern ist defenitiv nicht mal so eben gemacht und wahrscheinlich auch mit <für mich> unvorhersehbaren Folgen verbunden.

Also doch weitersuchen. War schon am überlegen ob ich die Bildinformationen des AWTCanvas nicht irgendwie auf das FXCanvas übertragen könnte. Hat da jemand eine Idee?


----------

