在Java中嵌入Gecko/WebKit

29 java swing gecko webkit javafx

我想将Gecko,WebKit或其他嵌入Java的webbrowser作为Swing/AWT控件.我正在寻找与JRex或者不同的东西JWebPane.

Ale*_*noy 15

你可以使用JxBrowser.它采用Swing/JavaFX组件,包含Chromium引擎,同时通过GPU提供丰富的API和开箱即用的硬件加速.

不幸的是,自4.0版以来,他们已经放弃了对其他引擎(如Gecko和WebKit)的支持.
请注意,除开源项目外,它不是免费的.

  • 所有免费获取开源信息的JXBrowser似乎都已从其网站上删除.有谁知道它是否仍然免费开源?AS @Supuhstar说,这是一个相当昂贵的产品.他们可以收取他们想要的任何费用,但很少有开源项目可以支付4,600美元的项目许可证(并且开发人员的每个开发人员价格1,600美元对于开源来说没有任何意义,而且对开放来说它也太贵了源项目).不幸的是,这似乎是唯一准备好用于基于浏览器的严肃应用程序的java组件. (8认同)

Gro*_*uez 11

如果SWT是一个选项,您可以使用SWT Browser小部件,这将使用特定于平台的浏览器(例如Mozilla,Webkit,IE)来实际显示内容.看一下这篇Eclipse文章的概述.

如果您不想使用SWT,那么我建议使用JavaXPCOM.这允许您将Gecko嵌入Java应用程序中.


Luk*_*ane 10

JCEF

JCEF(Chromium嵌入式框架的Java Wrapper)是围绕CEF的Java包装器,它反过来是Chrome的包装器:

这两个项目看起来都非常活跃,浏览器渲染速度比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);
    }
}
Run Code Online (Sandbox Code Playgroud)