JAVA浏览器实现方式课案.docx

上传人:b****1 文档编号:14937451 上传时间:2023-06-28 格式:DOCX 页数:12 大小:24.03KB
下载 相关 举报
JAVA浏览器实现方式课案.docx_第1页
第1页 / 共12页
JAVA浏览器实现方式课案.docx_第2页
第2页 / 共12页
JAVA浏览器实现方式课案.docx_第3页
第3页 / 共12页
JAVA浏览器实现方式课案.docx_第4页
第4页 / 共12页
JAVA浏览器实现方式课案.docx_第5页
第5页 / 共12页
JAVA浏览器实现方式课案.docx_第6页
第6页 / 共12页
JAVA浏览器实现方式课案.docx_第7页
第7页 / 共12页
JAVA浏览器实现方式课案.docx_第8页
第8页 / 共12页
JAVA浏览器实现方式课案.docx_第9页
第9页 / 共12页
JAVA浏览器实现方式课案.docx_第10页
第10页 / 共12页
JAVA浏览器实现方式课案.docx_第11页
第11页 / 共12页
JAVA浏览器实现方式课案.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JAVA浏览器实现方式课案.docx

《JAVA浏览器实现方式课案.docx》由会员分享,可在线阅读,更多相关《JAVA浏览器实现方式课案.docx(12页珍藏版)》请在冰点文库上搜索。

JAVA浏览器实现方式课案.docx

JAVA浏览器实现方式课案

JAVA浏览器实现方式

标签:

浏览器javaswingbrowserswtstring

2012-07-1215:

585831人阅读评论(3)收藏举报

分类:

j2se(138)

作者同类文章X

前言

在使用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,它提供了对多样化文本格式(RichTextFormat)的有限支持。

JEditorPane的常用方法

∙JEditorPane()

创建一个新的JEditorPane对象

∙JEditorPane(Stringurl)

根据包含URL规范的字符串创建一个JEditorPane

∙JEditorPane(Stringtype,Stringtext)

创建一个已初始化为给定文件的JEdiorPane

∙JEditorPane(URLinitialPage)

根据输入指定的URL来创建一个JEditorPane

∙scrollToReference(Stringreference)

将视图滚动到给定的参考位置(也就是正在显示的URL的URL.getRef方法所返回的值)

∙setContentType(Stringtype)

设置此编辑器所处理的内容类型

∙setEditorKit(EditorKitkit)

设置当前为处理内容而安装的工具包

∙setPage(Stringurl)

设置当前要显示的URL,参数是一个String

∙setPage(URLpage)

设置当前要显示的URL,参数是一个.URL对象

∙setText(Stringt)

将此TextComponent的文本设置为指定内容,预期以此编辑器的内容类型格式提供该内容

JEditorPane显示网页

要使用JEditorPane来显示HTML,需要完成以下几个步骤:

∙创建一个JEditorPane对象

privateJEditorPanejep=newJEditorPane();

∙设置JEditorPane显示的内容为text/html

jep.setContentType("text/html");

∙设置它不可编辑

jep.setEditable(false);

∙处理超链接事件

jep.addHyperlinkListener(this);

JEditorPane需要注册一个HyperlinkListener对象来处理超链接事件,这个接口定义了一个方法hyperlinkUpdate(HyperlinkEvente),示例代码如下:

publicvoidhyperlinkUpdate(HyperlinkEventevent)

{

if(event.getEventType()==HyperlinkEvent.EventType.ACTIVATED)

{

try

{

jep.setPage(event.getURL());

}

catch(IOExceptionioe)

{

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还是一个不错的选择。

回页首

开源的JavaWeb浏览器实现-Lobo

Lobo项目是一个第三方的开源Java浏览器项目,它的官方网站是 http:

//lobobrowser.org/java-browser.jsp。

它是使用100%Java代码实现的,而且能完整地支持HTML4、JavaScript以及CSS2,除此之外,它还支持直接的JavaFX渲染。

Lobo本身就已经是一个完整的浏览器软件,同时它还提供了很多与网页浏览器相关的API,便于Java程序员在自己的代码中使用或者进行扩展,其中包括渲染引擎API、浏览器API以及插件系统API等等。

具体的功能可以在它的官方网站上查看。

Lobo中的FramePanel

Lobo中实现Web浏览器的类叫FramePanel,它提供了对HTML页面显示的封装,并且提供了一些辅助的方法。

下面是一些常见方法的介绍:

∙FramePanel()

创建一个单独的FramePanel对象,它能被添加到任意的Swing窗口或者组件上。

∙booleanback()

浏览器返回上一个页面

∙booleanalert(Stringmessage)

打开一个提示对话框,并且显示消息

∙booleanforward()

浏览器进入下一个界面

∙booleanconfirm(Stringmessage)

打开一个确认对话框,显示特定的消息

∙voidnavigate(Stringurl)

在这个组件里面显示特定的网址,参数一个网址的String

∙voidreload()

重新加载当前的界面

∙addContentListener(ContentListenerlistener)

添加一个内容变化的监听器

∙addNavigationListener(NavigationListenerlistener)

添加一个导航(所显示的URL变化)的监听器

∙addResponseListener(ResponseListenerlistener)

添加一个获取服务器返回结果的监听器

使用FramePanel

要想使用FramePanel,首先需要在它的官方网站上面下载它的安装包,然后在安装目录下,可以看到有lobo.jar以及lobo-pub.jar,将这两个jar文件添加到classpath中。

类似于JEditorPane,要使用FramePanel有以下的步骤:

∙创建一个FramePanel的对象

FramePanelbrowser=newFramePanel();

∙将这个对象添加到界面上。

Frame是继承自JPanel,所以可以像其他Swing组件一样地添加到JPanel或者窗口上面。

∙通过调用FramePanel.navigate(url)的方法来设置要显示的网址。

∙不同于JEditorPane,FramePanel已经默认处理了点击超链接的事件,不需要另外手动地编写代码来处理。

Lobo浏览器API的优缺点

首先Lobo的FramePanel是100%纯Java的实现,具有良好的可移植性,在Window/Linux平台下都能正常地运行。

它相比于Swing中的JEditorPane,对于HTML、CSS的显示以及对于JavaScript的执行都有了比较大的提高。

经过实际的使用测试,在访问大多数网页的时候,都能比较正常的显示,与主流的IE/Firefox效果类似,不过它对于CSS支持还不是很完整,对于某些比较复杂的网页的,显示出入比较大。

另外Lobo项目的文档还不是特别完善,这可能是限制它广泛使用的一个原因。

回页首

JDICplus中的浏览器组件

JDIC(JavaDesktopIntegrationComponents)项目的背景是当可以不考虑Java代码的平台可移植性的时候,能让Java程序与系统无缝地整合在一起。

它提供给Java代码直接访问本地桌面的功能,其中包含了一系列的Java包以及工具,包含了嵌入本地浏览器组件的功能,启动桌面应用程序,在桌面的系统托盘处添加托盘图标以及注册文件类型关联等等。

JDICplus是在JDIC项目上的另外一个扩展,它是一个Java的win32操作系统的扩展开发工具包,也就是说,它只能在Windows操作系统上使用,所以不具有平台无关性。

它提供了很多类似于WindowsAPI的功能,除了提供了对IE组件的封装之外,还有地图显示组件,以及编辑浏览MSWord、MSPPT、MSExcel、MSOutlook、PDF的组件。

JDICplus的官方网站是JDICplus这个库的DEMO,这里讨论的主要是对WindowsIE封装的浏览器组件。

使用JDICplus的浏览器组件

使用JDICplus,首先需要的是环境的配置。

JDICplus需要的是JDK6.0或更高的版本,您需要首先从下载最新的版本。

否则代码不能正常编译运行。

其次是下载JDICplus的类库,然后将它添加到classpath中。

JDICplus中对IE封装的组件是org.jdic.web.BrTabbed,它除了封装了网页的显示,还处理了多个标签页的功能,所以它相对是比较强大的。

使用它的步骤如下:

∙初始化JDICplus组件,设置它为非设计模式。

这个组件它默认的模式是设计模式,此时如果用来显示HTML内容,会有很多无用的信息。

代码如下:

org.jdic.web.BrComponent.DESIGN_MODE=false;

∙初始化一个BrTabbed组件:

privateBrTabbedbrowser=newBrTabbed();

∙添加到界面中,BrTabbed是JPanel的子类,所以能直接在Swing中使用,就像其他Swing组件一样添加到JPanel或者窗口中。

BrTabbed类已经处理了点击超链接的事件,而且还支持多标签,这些不需要手动编写代码来处理。

JDICplus浏览器组件的优缺点

JDICplus中的浏览器组件使用了JNI来对IE进行了封装,所以它显示的效果与IE完全相同(还包括其中的右键菜单),而且BrTabbed还内置了多标签的功能,使用起来相对比较简单,同样不需要去处理点击超链接的事件。

它的缺点首先在于它必须是使用JDK6.0或以上版本,要求比较高,同时它底层使用的是Windows操作系统相关的API,所以不具有平台无关性。

回页首

SWT中的浏览器组件

SWT(TheStandardWidgetKit)是Java的一套开源组件库,它提供了一种高效的创建图像化用户界面的能力,也是Eclipse平台的UI组件之一。

它相比于Swing,速度相对比较快,而且因为使用了与操作系统相同的渲染方式,界面上与操作模式上比较接近操作系统的风格。

SWT的跨平台性是通过不同的底层支持库来解决的。

SWT的Browser类

org.eclipse.swt.browser.Browser类是SWT中用来实现网页浏览器可视化组件的类,它能显示HTML文档,并且实现文档之间的超链接。

它主要有以下的方法。

booleanback()

∙当前的会话返回到历史上前一个界面

booleanexecute(Stringscript)

∙执行特定的脚本

booleanforward()

∙当前的会话前进到历史上下一个页面

voidrefresh()

∙刷新显示当前的界面

setText(Stringhtml)

∙显示特定的HTML内容

setUrl(Stringurl)

∙显示特定的网页内容,传入的参数是网页的地址

使用Browser类

以下的代码演示了如何使用SWT中的Browser类:

SWT的Browser类demo

packageorg.dakiler.browsers;

importorg.eclipse.swt.SWT;

importorg.eclipse.swt.browser.Browser;

importorg.eclipse.swt.widgets.Button;

importorg.eclipse.swt.widgets.Display;

importorg.eclipse.swt.widgets.Event;

importorg.eclipse.swt.widgets.Label;

importorg.eclipse.swt.widgets.Listener;

importorg.eclipse.swt.widgets.Shell;

importorg.eclipse.swt.widgets.Text;

publicclassSWTBrowserTest

{

publicstaticvoidmain(Stringargs[])

{

Displaydisplay=newDisplay();

Shellshell=newShell(display);

shell.setText("SWTBrowserTest");

shell.setSize(800,600);

finalTexttext=newText(shell,SWT.BORDER);

text.setBounds(110,5,560,25);

Buttonbutton=newButton(shell,SWT.BORDER);

button.setBounds(680,5,100,25);

button.setText("go");

Labellabel=newLabel(shell,SWT.LEFT);

label.setText("输入网址:

");

label.setBounds(5,5,100,25);

finalBrowserbrowser=newBrowser(shell,SWT.FILL);

browser.setBounds(5,30,780,560);

button.addListener(SWT.Selection,newListener()

{

publicvoidhandleEvent(Eventevent)

{

Stringinput=text.getText().trim();

if(input.length()==0)return;

if(!

input.startsWith("http:

//"))

{

input="http:

//"+input;

text.setText(input);

}

browser.setUrl(input);

}

});

shell.open();

while(!

shell.isDisposed()){

if(!

display.readAndDispatch())

display.sleep();

}

display.dispose();

}

}

回页首

结束语

本文介绍了四种在Java图形界面中显示HTML或者特定网页的方法,包括Swing中的JEditorPane组件、Lobo浏览器的实现、JDICplus以及SWT的Browser组件。

对于熟练使用SWT的Java开发者来说,使用SWT中的浏览器组件是一个很好的选择。

如果是对于使用Swing的程序员来说,如果仅仅是显示不太复杂的HTML,JEditorPane就可以胜任了;如果不需要考虑到软件的可移植性,只需要在Windows下运行,那么使用JDICplus的浏览器组件是一个很好的选择;如果需要考虑可移植性,可以考虑使用Lobo浏览器。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2