我想将Gecko,WebKit或另一个Web浏览器嵌入到Java中作为Swing / AWT控件。
我正在寻找不同于JRex或JWebPane的东西。
真可惜JwebPane尚未见过曙光。 groups.google.com/group/javaposse/browse_thread/thread/可能很有趣。
您可以使用JxBrowser。
它具有Swing / JavaFX组件,该组件包装了Chromium引擎,同时通过GPU提供了丰富的API和开箱即用的硬件加速功能。
不幸的是,自4.0版本以来,他们已放弃了对其他引擎(如Gecko和WebKit)的支持。
请注意,它不是免费的,开源项目除外。
例如,它被硒使用
所有用于开源信息的免费JXBrowser似乎都已从其网站上删除。 有人知道开源是否仍然免费? AS @Supuhstar说,这是一个相当昂贵的产品。 他们可以随心所欲地收取费用,但是很少有开源项目能够负担得起4,600美元的项目许可费用(每个开发人员的价格为1,600美元对于开源来说没有任何意义,而且对于开源项目来说也太昂贵了 )。 不幸的是,这似乎是唯一适用于基于浏览器的严肃应用程序的Java组件。
对于开源和学术项目,JxBrowser是完全免费的。 请求评估许可证时,您只需要选择适当的选项即可:teamdev.com/jxbrowser#evaluate
如果选择了SWT,则可以使用" SWT浏览器"窗口小部件,这将使用特定于平台的浏览器(例如Mozilla,Webkit,IE)来实际显示内容。请参阅此Eclipse文章以获得概述。
如果您不想使用SWT,则建议使用JavaXPCOM。这使您可以将Gecko嵌入Java应用程序中。
联合会
JCEF(Chromium嵌入式框架的Java包装器)是围绕CEF的Java包装器,而CEF则是Chrome的包装器:
https://bitbucket.org/chromiumembedded/java-cef
https://bitbucket.org/chromiumembedded/cef
这两个项目似乎都很活跃,并且浏览器渲染比JavaFX的WebView快得多(至少在JDK 8u20中)。
JFXPanel
也可以通过JFXPanel在Swing应用程序中使用JavaFX WebView。
public class JavaFxWebBrowser extends JFXPanel {
private WebView webView;
private WebEngine webEngine;
public JavaFxWebBrowser() {
Platform.runLater(() -> {
initialiseJavaFXScene();
});
}
private void initialiseJavaFXScene() {
webView = new WebView();
webEngine = webView.getEngine();
webEngine.load("http://stackoverflow.com");
Scene scene = new Scene(webView);
setScene(scene);
}
}