论文网页浏览器的制作_第1页
论文网页浏览器的制作_第2页
论文网页浏览器的制作_第3页
论文网页浏览器的制作_第4页
论文网页浏览器的制作_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 网页浏览器的设计与实现摘要:网页浏览器是个显示网页服务器或档案系统内的文件,并让用户与此些文件互动的一种软件。本文介绍采用JDIC项目提供的WebBrowser组件实现浏览器模块的流程,包括的部分有:菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡模块以及收藏夹模块。此设计实现了网络浏览器的基本功能。关键词:网页浏览器;模块;收藏夹 Design and Implementation of Web BrowserAbstract: Web Browser is a software that displays the files of Web Server or file system,an

2、d let users interact with these files.This paper describes the procedure of Browser module implementation through using the component provided by JDIC,including menu bar module,toolbars module,address bar moduel,browser tab module and favorites module.This design implements the basic functions of We

3、b Browser.Key words: Web browser; Module; Favorites1. 绪论1.1 研究的背景1991年WorldWideWeb浏览器的发布WorldWideWeb的开发始于20世纪80年代末,之后10年间经过MTV的宣传以及Commodore 64的完善,终于在1991年这个有跨时代意义的Web浏览器发布了。1992年Erwise浏览器的发布Erwise被称为世界上第一个图形网页浏览器,它是由赫尔辛基科技大学的4个芬兰学生开发,主要是针对在Unix上运行 X Windows的需要。1993年Mosaic浏览器的发布Mosaic可以说在一定程度上升华了Erw

4、ise的图形化,并且将图形化浏览器推向了万维网的主流。Mosaic诞生在国家超级计算机应用中心(NCSA) ,同样是运行在X - Windows下的UNIX计算机。而在那个时代HTML 2.0的标准并未完善,使得Mosaic在功能上多少有一些不完善。Mosaic第二个版本是在1994年1月发布,之后最新的一个版本是1995年10月发布的。Mosaic 2.x成为了支持Html3的表单、表格、个性样式元素的主流浏览器。1994年Cello浏览器的发布它是由康奈尔大学法学院布鲁斯法律信息研究所的Thomas R. Bruce开发的,究其原因是因为当时所有的浏览器都是运行在Unix或者DOS下面,而

5、Windows在当时的律师中盛行!1995年Internet Explorer浏览器的发布目前的市场份额领导者,微软的Internet Explorer在1995年首次推出当时并不被看好。为了打造最好的浏览器,微软的源代码从Mosaic上获益匪浅,学习并迅速开始调整自己的浏览器是IE一大特色。第一场浏览器之战爆发。1996年Opera浏览器的发布Opera正式发布之前一直称为MultiTorg Opera而且很快因为其优良的多页面浏览特性、快捷栏和工具栏设定闻名。直到2.0版本MultiTorg Opera正式更名为Opera。1998年Mozilla旗下的Firefox浏览器发布现在这款套件

6、被称为SeaMonkey,跨平台并且支持Netscape Communicator 。SeaMonkey包含了一个Web浏览器(Navigator),邮件和新闻应用(Communicator),一个页面开发器(Mozilla Composer)和一个IRC客户端( ChatZilla ) 。2002年IE 开始主导浏览器市场市场份额达到95%,借助同操作系统的捆绑优势,IE赢得第一场浏览器之战。2003年,苹果Safari浏览器登场苹果进入了浏览器市场,推出自己的Webkit引擎,该引擎非常优秀,后来被包括Google,Nokia之类的厂商用于手机浏览器。2004年Firefox引发第二场浏览

7、器之战 Firefox 1.0 推出。早在 Beta 测试期间就积累了大量人气的Firefox引发了第二场浏览器之战,当年年底,Firefox已经赢得7.4%的市场份额。2006年IE7发布IE6发布后的第六年,迫于Firefox的压力,微软匆匆推出IE7应战,吸取了Firefox的一些设计思想,如标签式浏览,反钓鱼等。但这款浏览器现在看来并不成功。2008年Google携Chrome参战Google发布了他们自己的浏览器,加入这场战争。轻量,快,异常的稳固让这款浏览器成为不可轻视的一个对手。1.2 浏览器研究的现状随着网络的发展,网络安全成为网民上网的一大障碍,为了加强网络安全,软件公司制造

8、出各种各样的网络软件,防火墙、杀马软件、网络防护伞等,最终造成客户端日益庞大,而今天的浏览器就是这样,为了增强安全,浏览器添加各种必要组件,慢慢的越来越庞大,安全性能提上了,但启动速度逐渐在下降,为了弥补这一缺点HTML浏览器面世,它是为快速浏览网页而编写的,有效的降低了用户的等待时间。众所周知,现今全球占主导地位的五大浏览器分别是IE、Firefox、Chrome、Safari和Opera,这些浏览器使用的渲染引擎即通常所说的内核分别是Trident、Gecko、Webkit和Presto。 在内核的速度和兼容性方面进行比较:速度上Webkit最快,Presto第二,Gecko第三,Trid

9、ent最差;兼容性上,Trident是第一位的,Gecko其次,WebKit差不多,Presto,Webkit和Presto的开源也是它们相对于Trident的优势所在。 浏览器的比较:考量浏览器性能最关键最直观的指标是速度和兼容性。IE之所以能长期稳坐浏览器市场的头把交椅,除了微软的强势之外,也不能否认其由历史原因造成的网站兼容性优势;Webkit的速度是最快的,因此Chrome能发展如此迅猛。 其他的要素:安全和用户体验也是非常重要的。国内的浏览器厂商基本上采用的都是国外的浏览器内核,技术上差异不大,要靠什么吸引用户来增强竞争实力,就要在上层应用、增值服务等方面下力气,来增强用户的使用体验

10、。 国内浏览器面临的困境:网址获取能力差。一般我们通过人工输入来得到网址,这需要用户记忆网址。即浏览器提供了类似于收藏夹或书签之类的功能,也需通过手工加入网址,使用不够方便。语言翻译功能差。由于80%以上的网站位于英语国家,使得网络信息主要以英文为主,这就给中国用户带来了不便,我们只能借助另外的软件来翻译。信息搜索能力差。Internet上的信息不但数量巨大,而且复杂,难以快速获取有用的信息,信息的发布与检索式网路信息服务的主要内容,而浏览器并没有提供一定的搜索能力,需借助于其他的搜索引擎。外挂程序的不足。当今浏览器的外挂程序仅限于对网友浏览的支持,如图像,动画播放等等。而用户需要的还包括文件

11、下载上传,音乐欣赏等实用程序的支持。缺乏个性化服务。IE浏览器虽然内核稳定,能支持多种脚本,但在打开多个窗口时,会消耗大量的系统资源,使浏览速度变慢;而Navigation兼容性太差,且都是单页浏览器,界面固定,不能随用户的喜爱而方便定制客户端界面智能化程度偏低。这是当前浏览器最大的不足,例如缺乏网页的自动分类,却反通过学习用户的配置而自动调整服务策略的能力等。1.3 浏览器发展的方向 未来浏览器的新功能都来源于HTML 5, 但这个下一代超文本标记语言标准还处在开发中。HTML 5将提供新的元内置素,如和标记,开发者可以为一个Web应用程序进行后台任务处理,通过拖放设计更好的用户界面等。其他

12、的发展方向: 很多Web应用程序依靠JavaScript语言运行,例如谷歌文档。目前除了微软,基本所有浏览器都把JavaScript运行速度开发放在首位。 谷歌希望通过Native Client和O3D让浏览器具备计算机处理器式的独立线程处理能力。(Native Client能够帮助网络开发者编写更强大的Web应用程序,使得网络应用可以不需通过浏览器直接在本地操作系统上运行,O3D是一个用来在浏览器中创建丰富的、可交互的3D应用的开源Web API) 通过Opera Unite网络技术,Opera将让每一台电脑都可以既成为客户端也成为服务器,从此电脑之间可以直接通过网络进行点对点互动和信息共享

13、,再也不需要通过第三方服务器中转。 CSS(层叠样式表)和SVG(可缩放矢量图形)等标准将提高浏览器的图形处理能力。在用户的许可下,Geolocation(可设置的全局变量)技术可以让网站知晓你的确切位置。1.4 浏览器研究的方法 本项目采用Java技术实现网络浏览器。Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。Java SE允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java

14、应用程序。Java SE 包含了支持Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。 本项目中重要的是浏览器选项卡和收藏夹的实现,浏览器选项卡是采用J社团中的一个桌面开发组件项目JDIC项目提供的WebBrowser组件来实现。JDIC包含很多功能组件,其中We

15、bBrowser浏览器组件可以呈现网页内容,包括JavaScript,Flash等都能正确显示,它也可以控制浏览器的后退,前进,刷新,停止和打印等操作。2. 程序开发的基础2.1 Java技术2.1.1 Java技术概述Java是一个广泛使用的网络编程语言,是一种新的计算概念。首先,作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、鲁棒性、安全性、并且提供了并发的机制、具有很高性能。其次,它最大限度地利用了网络,Java的小应用程序(applet)可在网络上传输而不受CPU和环境的限制。另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。Java是

16、一种面向对象程序设计语言。面向对象技术提倡模拟现实世界的思维方式,数据与操作相绑定的程序风格,符合现代大规模软件开发的要求和潮流,正逐步替代面向过程的程序设计技术,成为计算机应用开发领域的主流趋势。同时,Java也是一种跨平台的语言。在单机时代,程序进程之间靠共享存储进行变量交换。在网络时代,运行在不同宿主机上的程序按网络协议进行无格式的消息(二进制字符流)交换,消息的语义由交换程序双方维护。不可否认,现在正处在一个网络异构时代,不同的计算机如果要配合运行一个程序,其编程语言一定是跨平台的。Java以跨平台、安全性高等特点受到大部分程序员的欢迎。Java不同于一般的编译执行计算机语言和解释执行

17、计算机语言。Java首先将源代码编译成字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现“一次编译、到处执行”的跨平台特性。不过,这同时也在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的执行速度有了大幅提升。2.1.2 Java应用平台简介Java至今主要发展出3个领域的应用平台:Java 2 Platform,Standard Edition(Java SE)、Java 2 Platform,Enterprise Edition(Java EE)和Java 2 Platform,Micro Edition(Java ME)。

18、Java SE平台该平台是各应用平台的基础。如果要学习其他平台,必须先了解Java SE。Java SE正是本书主要介绍对象。Java SE可以分为4个主要部分:JVM、JRE、JDK和Java语言。为了能运行Java程序,平台上必须安装有Java虚拟机(Java Virtual Machine,JVM)。JVM包含在Java运行环境(Java SE Runtime Environment,JRE)中,所以,为了要运行Java程序,必须取得JRE并进行安装。如果要开发Java程序,则必须取得JDK(Java SE Development Kits)并进行安装。JDK包括了JRE以及开发过程中所

19、需要的一些工具程序,如javac、java、appletviewer等。Java语言只是Java SE的一部分。除了语言之外,Java最重要的就是提供了庞大且功能强大的API类库,如字符串处理、数据输入输出、网络组件、用户窗口接口等功能。可以使用这些API作为基础进行程序开发,而无须重复开发功能相同的组件。Java EE平台Java EE以Java SE为基础,定义了一系列的服务、API、协议等,适用于开发分布式、多层式(Mulit-tiered)、以组件为基础、以Web为基础的应用程序。整个Java EE的体系是相当庞大的,比较为人熟悉的技术有JSP、Servlet、Enterprise J

20、avaBeans(EJB)、Java Remote Method Invocation(RMI)等。Java ME平台Java ME是Java平台版本中最小的一个,目的是作为小型数字设备上开发及部署应用程序的平台,如消费型电子产品或嵌入式系统等。最为人熟悉的设备有手机、PDA、股票机等。2.1.3 Java工作原理Java是一种跨平台的语言,同时也是既编译又解释的语言。Java可以运行在网络中不同的计算机上,但运行的计算机上必须装有相应的Java解释器。这种解释器称为JVM。Java工作流程用Java可以编写各种各样的程序,如单机应用程序,Web程序等。但不管哪种Java程序,其运行的流程大致

21、如图1所示。图2.1Java程序运行流程从图2.1可知,首先应该创建源程序。Java源程序一般用java作为扩展名,是一个文本文件,用Java语言写成,可以用任何文本编辑器创建与编辑。源程序完成后,就可以进行编译。需要使用Java编译器“javac”,读取Java源程序并翻译成Java虚拟机能够明白的指令集合,并以字节码的形式保存在文件中。通常,字节码文件以class作为扩展名。Java解释器,即“java”,读取字节码,取出指令并且翻译成计算机能执行的代码,完成运行过程。字节码运行的平台是Java虚拟机,只要计算机上安装有Java虚拟机,不论采用哪种操作系统,硬件配置如何不同,运行的结果都一

22、样。Java源程序首先被编译器编译成字节码文件,然后被JVM加载、解释执行。此处,Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译程序只需生成能够在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,实际上还是把字节码解释成具体平台上的机器指令执行。2.2 实现目标本项目是网页浏览器,包括五个部分,菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡模块以及收藏夹模块。1.菜单栏模块内容包括文件菜单,转到菜单,调整菜单和收藏夹菜单。主要是通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,还包括收藏夹的新建与整理。

23、2.工具栏的功能则是实现常用的操作,通过点击工具图标来实现菜单栏中所有的操作。3.地址栏模块则用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。4.浏览器选项卡模块实现在同一个窗体中显示多个页面。5.收藏夹模块是本设计中最重要的一部分,包括整理收藏夹菜单和添加收藏夹菜单,可在程序运行的过程中根据用户保存的内容,填充收藏夹的内容,且在网页浏览器重新启动的情况下依旧保留有上次保存的网。 2.3 Java的运行环境环境变量(1) java(TM) SE Development Kits,即JDK (2)设置环境变量 右击 我的电脑-属性-高级-环境变量 Path:系统在任何路径

24、下都可以识别Java命令需要设置的变量 Path:C:Program Filesjavajdk1.6.0_21bin; (3)设置系统变量 classpath:为java加载类(包括class,lib)的路径,只有类在classpath中,Java命令才能识别 classpath:C:Program Filesjavajdk1.6.0_01libtools.jar; java_home:java的安装路径 java_home:C:Progran Filesjavajdk1.6.0;3. 程序整体设计说明3.1 需求分析本模块要实现的功能模块包括:菜单栏模块,工具栏模块,地址栏模块,浏览器选项卡

25、模块以及收藏夹模块。1.菜单栏模块内容包括文件菜单,转到菜单,调整菜单和收藏夹菜单。主要是通过菜单栏的操作实现网页的前进,后退,停止,刷新和转到功能,还包括收藏夹的新建与整理。2.工具栏的功能则是实现常用的操作,通过点击工具图标来实现菜单栏中所有的操作。3.地址栏模块则用来接收用户输入的网站地址,然后将该地址传给浏览器组件,呈现指定的网页。4.浏览器选项卡模块实现在同一个窗体中显示多个页面。5.收藏夹模块是本设计中最重要的一部分,包括整理收藏夹菜单和添加收藏夹菜单,可在程序运行的过程中根据用户保存的内容,填充收藏夹的内容,且在网页浏览器重新启动的情况下依旧保留有上次保存的网页。3.2 结构分析

26、本模块设计的浏览器,有菜单栏,工具栏,地址栏,页面显示区,收藏夹。它的主要特点有:1. 基于IE内核,采用多窗口多线程工作方式,节约了系统资源,稳定性好,不会像那样因打开多窗口而使系统速度缓慢,甚至出现“程序没有相应“等现象。2. 对网页自动分类,这是它的特点。当用户在浏览网页进入一个从未到过的网站时,很容易导致迷航,用户先阅读网页才能判定该网页是否是自己所感兴趣的网页。这样,用户把大量时间和精力花费在不必要的网页上,分散了用户的注意力。3. 提供类别导航功能。它将已分类的网站地址置入各类别中,用户可以根据自己感兴趣的主题进行访问和浏览。类别的跟新,修改,添加等维护一般由系统进行,也可由用户自

27、己手动维护。系统可以根据类别的更改而自行调整系统的分类结果。4. 程序设计具体方法4.1 程序设计本设计分为2个部分:4.1.1 主界面的设计程序源代码实现如下:/*源代码框架*/import java.awt.*; import javax.swing.*;import java.awt.event.*; import javax.swing.event.*;import javax.swing.border.*;import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileView; import

28、 java.io.*; import java.util.*; class ViewSourceFrame extends JFrame implements ActionListener JPanel contentPane; JPanel panel1 = new JPanel (); JPanel panel2 = new JPanel (); Border border1; JButton closebutton = new JButton (); JButton savebutton = new JButton (); JScrollPane jScrollPanel = new J

29、ScrollPane (); JTextArea jTextArea1 = new JTextArea (); String htmlSource; /*构造函数,初始化图形用户界面*/public ViewSourceFrame (String htmlSource) this.htmlSource = htmlSource; enableEvents (AWTEvent.WINDOW_EVENT_MASK); setSize (new Dimension (600,500); setTitle (源代码); setDefaultCloseOperation (WindowConstants

30、.DISPOSE_ON_CLOSE); contentPane = (JPanel)getContentPane (); contentPane.setLayout (new BorderLayout(); panel2.setLayout (new FlowLayout(); savebutton.setText (保存); closebutton.setText (退出); closebutton.addActionListener(this); savebutton.addActionListener(this); jScrollPanel.getViewport ().add (jTe

31、xtArea1,null); border1 = BorderFactory.createEmptyBorder (4,4,4,4); panel1.setLayout (new BorderLayout(); panel1.setBorder (border1); panel1.add (jScrollPanel,BorderLayout.CENTER); contentPane.add (panel1,BorderLayout.CENTER); panel2.add (savebutton); panel2.add (closebutton); contentPane.add (panel

32、2,BorderLayout.SOUTH); this.jTextArea1.setEditable (true); this.jTextArea1.setText (this.htmlSource); /设置光标的位置,将其移动到文本区第0个字符this.jTextArea1.setCaretPosition (0); /*实现监听器接口的actionPerformed函数*/public void actionPerformed(ActionEvent e) String url = ; if (e.getSource() = closebutton) dispose(); else if

33、(e.getSource() = savebutton) JFileChooser fc=new JFileChooser(); int returnVal=fc.showSaveDialog(ViewSourceFrame.this); File saveFile=fc.getSelectedFile(); try FileWriter writeOut = new FileWriter(saveFile); writeOut.write(jTextArea1.getText(); writeOut.close(); catch (IOException ex) System.out.pri

34、ntln(保存失败); 4.1.2 菜单栏、工具栏及浏览器选项卡的实现程序源代码实现如下:/*网页浏览器主程序*WebBrowser.java*/import java.awt.*; import javax.swing.*;import javax.swing.text.*;import java.awt.event.*; import javax.swing.event.*;import javax.swing.border.*;import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileVie

35、w; import java.io.*; import .*; import java.util.*; public class WebBrowser extends JFrame implements HyperlinkListener,ActionListener /建立工具栏用来显示地址栏 JToolBar bar=new JToolBar (); /建立网页显示界面 JTextField jurl = new JTextField (60); JEditorPane jEditorPane1 = new JEditorPane (); JScrollPane scrol

36、lPane = new JScrollPane (jEditorPane1); JFileChooser chooser=new JFileChooser (); JFileChooser chooser1=new JFileChooser (); String htmlSource; JWindow window = new JWindow (WebBrowser.this); JButton button2=new JButton (窗口还原); Toolkit toolkit = Toolkit.getDefaultToolkit(); /建立菜单栏 JMenuBar jMenuBar1

37、 = new JMenuBar(); /建立菜单组 JMenu fileMenu = new JMenu (文件(F); /建立菜单项 JMenuItem saveAsItem = new JMenuItem (收藏夹(A).); JMenuItem exitItem=new JMenuItem (退出(I); JMenu editMenu=new JMenu (编辑(E); JMenuItem backItem=new JMenuItem (后退); JMenuItem forwardItem=new JMenuItem (前进); JMenu viewMenu=new JMenu (视图(

38、V); JMenuItem fullscreenItem=new JMenuItem (全屏(U); JMenuItem sourceItem=new JMenuItem (查看源码(C); JMenuItem reloadItem=new JMenuItem (刷新(R);/建立工具栏 JToolBar toolBar = new JToolBar(); /建立工具栏中的按钮组件 JButton picSave = new JButton(收藏夹); JButton picBack = new JButton(后退); JButton picForward = new JButton(前进)

39、; JButton picView = new JButton(查看源代码); JButton picExit = new JButton(退出);JLabel label=new JLabel (地址); JButton button=new JButton (转向); Box adress=Box.createHorizontalBox (); /ArrayList对象,用来存放历史地址 private ArrayList history=new ArrayList(); /整型变量,表示历史地址的访问顺序 private int historyIndex; /* *构造函数 *初始化图形

40、用户界面 */ public WebBrowser() setTitle (网页浏览器); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /为jEditorPane1添加事件侦听 jEditorPane1.addHyperlinkListener (this); /为组件fileMenu设置热键F fileMenu.setMnemonic(F); saveAsItem.setMnemonic (S); /为“另存为”组件设置快捷键为ctrl+s saveAsItem.setAccelerator(Key

41、Stroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); exitItem.setMnemonic(Q); exitItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_E,InputEvent.CTRL_MASK); /将菜单项saveAsItem加入到菜单组fileMenu中 fileMenu.add (saveAsItem); /在菜单项中添加隔离 fileMenu.addSeparator (); fileMenu.add (exitItem); backItem.setM

42、nemonic (B); backItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_Z,InputEvent.CTRL_MASK); forwardItem.setMnemonic(D); forwardItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_P,InputEvent.CTRL_MASK); editMenu.setMnemonic(E); editMenu.add (backItem); editMenu.add (forwardItem); viewMenu

43、.setMnemonic(V); fullscreenItem.setMnemonic(U); fullscreenItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_U,InputEvent.CTRL_MASK); sourceItem.setMnemonic(C); sourceItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_C,InputEvent.CTRL_MASK); reloadItem.setMnemonic(R); reloadItem.setAccele

44、rator(KeyStroke.getKeyStroke (KeyEvent.VK_R,InputEvent.CTRL_MASK); Container contentPane=getContentPane (); /设置大小 scrollPane.setPreferredSize(new Dimension(100,500); contentPane.add (scrollPane, BorderLayout.SOUTH); /在工具栏中添加按钮组件 toolBar.add(picSave); toolBar.addSeparator(); toolBar.add(picBack); too

45、lBar.add(picForward); toolBar.addSeparator(); toolBar.add(picView); toolBar.addSeparator(); toolBar.add(picExit); contentPane.add (bar,BorderLayout.CENTER); contentPane.add(toolBar,BorderLayout.NORTH); viewMenu.add (fullscreenItem); viewMenu.add (sourceItem); viewMenu.addSeparator (); viewMenu.add (

46、reloadItem); jMenuBar1.add (fileMenu); jMenuBar1.add (editMenu); jMenuBar1.add (viewMenu); setJMenuBar (jMenuBar1); adress.add (label); adress.add (jurl); adress.add (button); bar.add (adress); /为组件添加事件监听 saveAsItem.addActionListener(this); picSave.addActionListener(this); exitItem.addActionListener

47、(this); picExit.addActionListener(this); backItem.addActionListener(this); picBack.addActionListener(this); forwardItem.addActionListener(this); picForward.addActionListener(this); fullscreenItem.addActionListener(this); sourceItem.addActionListener(this); picView.addActionListener(this); reloadItem

48、.addActionListener(this); button.addActionListener(this); jurl.addActionListener(this); /* *实现监听器接口的actionPerformed函数 */ public void actionPerformed(ActionEvent e) String url = ; /点击转向按钮 if (e.getSource() = button) /获得地址栏的内容 url=jurl.getText (); /url不为“”,并且以“http:/”开头 if(url.length ()0&url.startsWit

49、h (http:/) try /JEditorPane组件显示url的内容链接 jEditorPane1.setPage (url); /将url的内容添加到ArrayList对象history中 history.add(url); /historyIndex的数值设为history对象的长度-1 historyIndex=history.size()-1; /重新布局 jEditorPane1.setEditable(false); /add by copy editor :) jEditorPane1.revalidate (); catch(Exception ex) /如果链接显示失败,则弹出选择对话框“无法打开该搜索页” JOptionPane.showMessageDialog (WebB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论