Java 网页浏览器组件介绍(全的4种)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前言
在使用Java 开发客户端程序时,有时会需要在界面中使用网页浏览器组件,用来显示一段HTML 或者一个特定的网址。本文将介绍在界面中使用浏览器组件的四种方法,给出示例的代码,并且分析每种方法的优点与不足,便于Java 开发者在实际开发过程中根据自己的需要来选择。
回页首
JDK 中的实现- JEditorPane
Swing 是一个用于开发Java 应用程序图形化用户界面的工具包,它是以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格,而且它是轻量级(light-weight)组件,没有本地代码,不依赖于操作系统的支持,这是它与AWT 组件的最大的区别。
在Swing 中,有一个组件是JEditorPane,它是一个可以编辑任意内容的文本组件。这个类使用了EditorKit 来实现其操作,对于给予它的各种内容,它能有效地将其类型变换为适当的文本编辑器种类。该编辑器在任意给定时间的内容类型由当前已经安装的EditorKit 来确定。
默认情况下,JEditorPane 支持以下的内容类型:
•text/plain
纯文本的内容,在此情况下使用的工具包是DefaultEditorKit 的扩展,可生成有换行的纯文本视图。
•text/html
HTML 文本,在此情况下使用的工具包是javax.swing.text.html.HTMLEditorKit,它支持HTML3.2。
•text/rtf
RTF 文本,在此情况下使用的工具包是类javax.swing.text.rtf.RTFEditorKit,它提供了对多样化文本格式(Rich Text Format)的有限支持。
JEditorPane 的常用方法
JEditorPane()
创建一个新的JEditorPane 对象
JEditorPane(String url)
根据包含URL 规范的字符串创建一个JEditorPane
JEditorPane(String type,String text)
创建一个已初始化为给定文件的JEdiorPane
JEditorPane(URL initialPage)
根据输入指定的URL 来创建一个JEditorPane
scrollToReference(String reference)
将视图滚动到给定的参考位置(也就是正在显示的URL 的URL.getRef 方法所返回的值)setContentType(String type)
设置此编辑器所处理的内容类型
setEditorKit(EditorKit kit)
设置当前为处理内容而安装的工具包
setPage(String url)
设置当前要显示的URL, 参数是一个String
setPage(URL page)
设置当前要显示的URL, 参数是一个.URL 对象
JEditorPane 需要注册一个HyperlinkListener 对象来处理超链接事件,这个接口定义了一个方法hyperlinkUpdate(HyperlinkEvent e),示例代码如下:
public void hyperlinkUpdate(HyperlinkEvent event)
{
if(event.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
{
try
{
jep.setPage(event.getURL());
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
完整的代码可以在本文中下载到。在这个例子中,实现了一个HyperlinkListener 接口,在方法实现中,if(event.getEventType()==HyperlinkEvent.EventType.ACTIVATED)
这行代码表示首先判断HyperlinkListener 的类型,在这里只处理事件类型为HyperlinkEvent.EventType.ACTIVATED 的事件(即点击了某个超链接的事件),然后通过调用HyperlinkEvent 的getURL() 方法来获取超链接的URL 地址。最后通过调用jep.setPage(event.getURL()) 方法,使得JEditorPane 显示新的URL 地址。
JEditorPane 优缺点
由于JEditorPane 是包含在J2SE 中的Swing 中,所以不需要导入第三方的jar 文件,相对来说比较简单。但是JEditorPane 类对于网页中的CSS 的显示处理以及对JavaScript 脚本执行的支持很弱,而且官方似乎也没有对JEditorPane 类进行改进的打算,如果想用JEditorPane 来显示常见的网址,会发现显示出来的页面与IE,Firefox 有很大的差别,而且不能正常地处理页面逻辑。所以如果仅仅用来显示比较简单的HTML, 用JEditorPane 还是一个不错的选择。
回页首开源的Java Web 浏览器实现- Lobo
Lobo 项目是一个第三方的开源Java 浏览器项目,它的官方网站是/java-browser.jsp。它是使用100%Java 代码实现的,而且能完整地支持HTML4、JavaScript 以及CSS2,除此之外,它还支持直接的JavaFX 渲染。
Lobo 本身就已经是一个完整的浏览器软件,同时它还提供了很多与网页浏览器相关的API,便于Java 程序员在自己的代码中使用或者进行扩展,其中包括渲染引擎API、浏览器API 以及插件系统API 等等。具体的功能可以在它的官方网站上查看。
Lobo 中的FramePanel
Lobo 中实现Web 浏览器的类叫FramePanel,它提供了对HTML 页面显示的封装,并且提供了一些辅助的方法。下面是一些常见方法的介绍:
FramePanel()
创建一个单独的FramePanel 对象,它能被添加到任意的Swing 窗口或者组件上。boolean back()
浏览器返回上一个页面
boolean alert(String message)
打开一个提示对话框,并且显示消息
boolean forward()
浏览器进入下一个界面
boolean confirm(String message)
打开一个确认对话框,显示特定的消息
void navigate(String url)
在这个组件里面显示特定的网址,参数一个网址的String
void reload()
重新加载当前的界面
addContentListener(ContentListener listener)
添加一个内容变化的监听器
addNavigationListener(NavigationListener listener)
添加一个导航(所显示的URL 变化)的监听器
addResponseListener(ResponseListener listener)
添加一个获取服务器返回结果的监听器