I was looking for a way to integrate a Web-Browser-Component in an existing Swing-Application and found WebView for Java FX 2.0. Furthermore I found a blog post on java.net showing how to integrate a Java FX component into a Swing Application . So I guess it might be doable, but I haven't tried yet.
I'm curious, do you think this is a good approach? Are there any better solutions? Is it even doable? Is maybe something prebundled out there?
The motivation is: I want to integrate some WebBrowser-whatever into an existing Swing-Application, the long-term goal being to get rid of the whole Java Desktop Application at all, replacing it with a web-based solution (the plan is to slowly convert existing aspects into webpages which are then displayed in the WebBrowser-Component until nothing is left of the swing application except for the browser-skeleton). The backend of course remains Java :-)
I haven't tried yet since I simply lack the time to integrate JavaFX with my project (its a job, we're just exploring alternatives fpr the long run), so I better ask before I get burned.
It is very well possible!
One has to install JavaFX 2.0, and somehow manage to have
jfxrt.jar
in the Classpath.The following code renders a JFXPanel inside a JFrame. The JFXPanel contains a WebView which loads
google.com
.However, at least on my machine, the WebView feels rather sloppy. I'm working on Mac OS X 10.6; JavaFX 2.0 is still in beta for OS X.
Alternatives I found include MozSwing, which looked very promising and feels quite fast actually. Sadly the project is not being developed any further since 2008 and the bundled XUL runner is rather old (no new fancy html 5).
Both approaches are a nightmare to include via maven, you better setup your own local repository.
If you need to embed Swing lightweight web browser based on Chromium engine, you can take a look at JxBrowser library. The following code demonstrates how to embed Browser component into JFrame and load some web page:
The web page will be rendered by Chromium engine.
It's free for open source projects ;)