【发布时间】:2010-11-30 02:12:13
【问题描述】:
如何在基于 Java 的桌面应用程序中嵌入浏览器?我可以直接与嵌入式浏览器通信(而不是通过 localhost)...例如加载 html 文本、捕获 onclick 事件、获取表单值?
谢谢
【问题讨论】:
-
您想要一个真正的嵌入式浏览器,还是想要以编程方式浏览 HTML 页面?
如何在基于 Java 的桌面应用程序中嵌入浏览器?我可以直接与嵌入式浏览器通信(而不是通过 localhost)...例如加载 html 文本、捕获 onclick 事件、获取表单值?
谢谢
【问题讨论】:
您也可以尝试来自 DJ Native Swing 的 JWebBrowser:http://djproject.sourceforge.net/ns
【讨论】:
你可以试试 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");
【讨论】:
Swing JEditor 窗格能够显示 HTML。
查看http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JEditorPane.html
在 SO 中还有对这个主题的更详细的回答:
https://stackoverflow.com/questions/48249/java-embedding-a-web-browser-pane
【讨论】:
Lobo 是一个可以嵌入到 Swing 应用程序中的 Java Web 浏览器。
它支持 HTML 4、CSS 2 和 Javascript,与仅支持 HTML 3.2 的 JEditorPane 相比,它更新了。
关于什么是可能的一些想法,Lobo Browser API documentation 应该提供一个关于 Lobo 可以做什么的想法。特别是org.lobobrowser.gui 有一个BrowserPanel 类,它是JPanel 的子类,因此它可以直接嵌入到Swing 应用程序中。
比如BrowserPanel.navigate方法可以用来跳转网页,有很多Listeners可以捕捉浏览器中发生的事件。
【讨论】:
查看 Eclipse,它有一个嵌入式浏览器,可由用户配置(它们支持多种浏览器)。
即使您通过 AWT_SWT 桥使用基于 AWT 的应用程序,您也可以嵌入他们的浏览器。
这个article 可以帮助您入门。
【讨论】:
您可以使用JEditorPane 构建一个非常原始的浏览器。您可以收听 Hyperlink 事件,但无法使用 javascript 或获取表单值。
【讨论】: