在基于Java的桌面应用程序中嵌入浏览器

8

可能是重复问题:
有没有办法在Java中嵌入浏览器?

我该如何在基于Java的桌面应用程序中嵌入浏览器?能否直接与嵌入式浏览器通信(而不是通过localhost)...例如加载HTML文本,捕获单击事件,获取表单值等?

谢谢。


你想要一个实际的嵌入式浏览器,还是想要通过编程自动导航 HTML 页面? - skaffman
可能想要查看 https://github.com/rogerwang/node-webkit - jrhicks
6个回答

6

SO的链接建议使用JWebPane,但您建议使用JEditor。我认为它们不是同一件事。感谢提供的链接,我会调查两者。 - jrhicks

6

请了解Eclipse,它拥有一个内嵌浏览器,用户可以进行配置(支持多个浏览器)。

即使您使用基于AWT的应用程序,也可以通过AWT_SWT桥嵌入其浏览器。

这篇文章可能会帮助您入门。


这个有独立版本吗? - Thorbjørn Ravn Andersen

3

您可以使用JEditorPane构建一个非常原始的浏览器。您可以监听Hyperlink事件,但无法使用javascript或获取表单值。


2

2

Lobo是一款Java网络浏览器,可嵌入Swing应用程序中。

它支持HTML 4、CSS 2和Javascript,相比只支持HTML 3.2的JEditorPane更加更新。

如果想了解一些可能性,Lobo浏览器API文档可以提供关于使用Lobo的想法。特别地,org.lobobrowser.gui有一个继承自JPanelBrowserPanel类,因此可以直接嵌入Swing应用程序中。

例如,BrowserPanel.navigate方法可用于跳转到网页,并且有许多Listener可以捕获浏览器中发生的事件。


原始的Lobo项目似乎已经停止了。这里有一个分支:https://sourceforge.net/projects/loboevolution/ - Stefan

1
你可以尝试使用JxBrowser库:http://www.teamdev.com/jxbrowser/features/ 例如,如果你想将Mozilla浏览器嵌入到Java Swing应用程序中,只需要编写以下代码:
Browser browser = BrowserFactory.createBrowser(BrowserType.Mozilla);

JFrame frame = new JFrame();

frame.add(browser.getComponent(), BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

browser.navigate("http://www.google.com");

2
这是不免费使用的:/ - mikakun
更新:自4.0版本起,JxBrowser在所有平台上(包括Mac OS X、Linux和Windows)都与Chromium引擎集成。 - Vladimir
@Vladimir,你能给我提供jxBrowser的jar文件和教程链接吗?如果你有任何使用jxBrowser读取epub文件/epublib的教程,请提及一下。 - Ravi Bhalsod
@RaviPrajapati JxBrowser的JAR文件可以从https://www.teamdev.com/jxbrowser下载。在这个网页上,您可以找到有关JxBrowser文档和示例的链接。 - Vladimir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接