基于JAVA的Web浏览器

摘要

网页浏览器是一个软件程序,用于与www建立联结,并与之进行通信。它可以在www系统中根据链接确定信息资源的位置,并将用户感兴趣的信息资源取回来,对HTML文件进行解释,然后将文字图像显示出来,或者将多媒体信息还原出来。本Web浏览器是采用JDIC项目提供的WebBrowser组件实现网页浏览,使用JavaSwing技术实现该浏览器的图形界面。

关键字

JavaSwing; JDIC; Web 浏览器

基于Java的Web浏览器设计:

随着21世纪新时代的到来,网络越来越普及到各行各业。浏览器作为网络普及中的核心因素之一,它发展可以说是网络的发展的写照。浏览器技术的改进与更新,无疑是网络普及的重要推动力之一。本项目采用Java技术实现网页浏览器。Java 是-一个广泛使用的编程语言,它基于Java虚拟机技术,从而实现跨平台。它简单,面向对象,不依赖与机器的结构,具有可移植性,安全性,并且提供了并发的机制,具有很高的性能。其次,它最大限度的利用了网络,Java的小应用程序(applet) 。可在网络上传输而不受CPU和环境的限制,另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。网页的显示以及导航操作是采用Java.net社团中的一个桌面开发组件项目JDIC项目提供的WebBrowser组件来实现。JDesktop In-tegrationComponents,或JDIC,是一个给Java开发人员提供通过交差平台API存取本地特性的包罗万象的项目。该项目由Sun的Desktop组启动,目的是让Java应用能更好地和它们所运行的桌面环境集成。为了能从开发人员那里得到想要的特性的快速反馈,他们将JDIC做成了开源项目。尽管目前没有计划,但JDIC团队正考虑把JDIC的特征加入Java核心类库的未来版本中去。JDIC包含很多功能组件,其中Web-Browser浏览器组件可以呈现网页内容,包括JavaScript, Flash 等都能正确显示,它也可以控制浏览器的后退,前进,刷新,停止和打印等操作。

基于Java的Web浏览器模块

基于Java的Web浏览器主要包括三个模块:菜单栏模块,工具栏模块,网页现实模块,状态栏模块。

  • 菜单栏模块:文件菜单,能进行日常的文件操作,打开网页文件,另存为文件。查看菜单,能查看访问网页的历史记录,查看网页源代码,刷新等网页导航操作。收藏菜单,能添加收藏夹,以及对收藏夹的管理。工具菜单,能对浏览器进行相关的配置设置:如主页的设置,搜索引擎的选择。
  • 工具栏模块:能对网页进行导航操作,如:后退,前进,刷新等操作。提供截图工具,能方便用户截取图片。具有搜索栏,方便用户进行快速的网页搜索。
  • 网页显示模块:网页采用标签标志的显示方式,用户能够方便地切换多个访问网页,能提供便捷的添加标签功能,提供用户的体验感,方便用户快速添加网页。

相关技术

JAVA GUI:
GUI全称Graphical User Interfaces,意为图形用户户界面,又称为图形用户接口,GUI指的就是采用图形方式显示的计算机操作用户界面,打个比方吧,我们点击QQ图标,就会弹出一个QQ登陆界面的对话框。这个QQ图标就可以被称作图形化的用户界面。实现GUI编程的必不可少的三个条件是组件、事件、事件监听。
组件就是一些基本的图形元素,包含有两类组件,一类是像我们经常用到的按钮、文本框、文本域、多选按钮、单选按钮等;另一类是我们经常说到的容器,比如说窗体、Panel等,它的作用主要是用来组织界面上的组件或者单元。
事件是指组件触发的动作事件,java中不同的事件由不同的监听器处理,组件是事件源对象,而监听器主要用来接收来自事件源对象产生的动作事件,然后对其处理。
监听过程: 当事件源对象产生某种事件时,先封装该事件的信息,然后向监听器传送此事件对象,监听器在接收到事件对象后,为了能让监听器检查组件是否发生了该事件,会向该事件源对象(即该组件)注册事件监听器,然后事件处理器会检查事件是否发生,如果发生了,那么激活事件处理器进行处理。
在本程序设计中,组件起到了创造窗口,单选按钮,多选按钮,文本框的作用,为程序起到奠基作用。事件起到程序推动的作用,让程序事件发生,用来查找网页。监听器起到监听事件动作的作用,若事件发生,则运行该事件的动作,在本程序中有超链接事件监听起着能让程序与网络链接连接的功能,鼠标事件监听器起到接收鼠标动作的作用,动作监听器起到接收按钮等发出的动作,从而去实现它。

JAVA I/O :
数据流是指所有的数据通信通道;
有两类流nputStream and OutputStream。Java中每一种流的基本功能依赖于它们InputStream用于ead,OutputStream用于write,读和写都是相对与内存说的,读就是从其他地方把数据拿进内存,写就是把数据从内存推出去这两个都是抽象类,不能直接使用。
在本程序设计中,I/O起到了将数据信息传输到目的地,也可以将文件,网络,压缩包等进行输出。在遇到错误时能抛出异常,能进行文件的创建与删除,获取文件的信息,还能对文件信息起到缓存的作用。

开发工具

Eclipse java2018-12 (注意:版本不一样,会出问题,高的版本会对低版本的语法报错,因为高版本已经不适用低版本的语法了); Jdk1.8.0

实例代码

WebBroser类:网页浏览器的主类文件,生成网页浏览器的主题框架,并实现框架上各个组件的监听事件

package 网页浏览器;
import java.awt.datatransfer.Clipboard;//获得系统剪切板
import java.awt.datatransfer.DataFlavor;//映射
import java.awt.datatransfer.Transferable;//提供在应用程序之间和在应用程序内部传输数据的接口和类
import java.awt.*;//提供用户界面原件
import javax.swing.*;//提供按钮类
import java.awt.event.*;//定义了许多不同类型的事件监听器类
import javax.swing.event.*;//提供swing事件包
import javax.swing.border.*;//提供围绕 Swing 组件绘制特殊边框的类和接口
import java.io.*;//提供输入输出流
import java.net.*;//提供支持联网的类
import java.util.*;//提供实用方法和数据结构
import javax.swing.filechooser.*;//包含 JFileChooser 组件使用的类和接口
public class WebBrowser extends JFrame implements HyperlinkListener, ActionListener {
   
	JToolBar bar = new JToolBar();// 建立工具栏用来显示地址栏
	// 建立网页显示界面
	JTextField jurl = new JTextField(55);//文本框大小
	JEditorPane2 jEditorPane1 = new JEditorPane2();
	JScrollPane scrollPane = new JScrollPane(jEditorPane1);//滚动条
	JFileChooser chooser = new JFileChooser();
	JFileChooser chooserl = new JFileChooser();//选择文件
	String htmlSource;
	JWindow window = new JWindow(WebBrowser.this);//使用指定的所有者框架创建窗口
	JButton button2 = new JButton("窗口还原");
	Toolkit toolkit = Toolkit.getDefaultToolkit();//获取默认工具包
	JMenuBar jMenuBarl = new JMenuBar();// 建立菜单栏
	JMenu fileMenu = new JMenu("文件(F)");// 建立菜单组
	// 建立菜单项
	JMenuItem saveAsitem = new JMenuItem("另存为(S)");
	JMenuItem exitltem = new JMenuItem("退出(E)");
	JMenu editMenu = new JMenu("编辑(E)");
	JMenuItem backitem = new JMenuItem("后退(Z)");
	JMenuItem forwarditem = new JMenuItem("前进(P)");
	JMenu viewMenu = new JMenu("视图(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("前进");
	JButton picView = new JButton("查看源代码");
	JButton picFull = new JButton("全屏");
	JButton picreloaditem = new JButton("刷新");
	JButton picExit = new JButton("退出");
	JLabel label = new JLabel("地址");
	JButton button = new JButton("转向");
	Box adress = Box.createHorizontalBox();
	Box adressSource = Box.createHorizontalBox();//创建一个从左到右显示其组件
	private ArrayList history = new ArrayList();// Arraylist对象,用来存放历史地址
	private int historyindex;// 整型变量,表示历史地址的访问顺序
	public WebBrowser() {
   
		setTitle("网页浏览器");
		setResizable(true);//是否可以调节窗口大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使用System exit方法退出应用程序。仅在应用程序中使用
		jEditorPane1.addHyperlinkListener(this);// 为jeditorpanel添加事件侦听
		fileMenu.setMnemonic('F');// 为组件filemenu设置热键F
		saveAsitem.setMnemonic('S');// 为“另存为”组件设置快捷键为ctrl+s
	saveAsitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK));//快捷键为S
		exitltem.setMnemonic('E');
	exitltem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_DOWN_MASK));//快捷键为E
		// 将菜单项 saveAsitem加入到菜单栏fileMenu中
		fileMenu.add(saveAsitem);
		// 在菜单项中添加隔离
		fileMenu.addSeparator();
		fileMenu.add(exitltem);
		backitem.setMnemonic('Z');
	backitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK));//快捷键为Z
		forwarditem.setMnemonic('P');
	forwarditem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_DOWN_MASK));//快捷键为P
		editMenu.setMnemonic('E');
		editMenu.add(backitem);
		editMenu.add(forwarditem);
		viewMenu.setMnemonic('V');
		fullscreenitem.setMnemonic('U');		fullscreenitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK));//快捷键为U
		sourceitem.setMnemonic('C');
	sourceitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK));//快捷键为C
		reloaditem.setMnemonic('R');
	reloaditem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK));//快捷键为R
		Container contentPane = getContentPane();
		scrollPane.setPreferredSize(new Dimension(200, 450));// 设置大小
		contentPane.add(scrollPane, BorderLayout.SOUTH);//南
		// 在工具栏中添加按钮组件
		toolBar.add(picSave);
		toolBar.addSeparator();
		toolBar.add(picBack);
		toolBar.add(picForward);
		toolBar.addSeparator();
		toolBar.add(picFull);
		toolBar.add(picView);
		toolBar.add(picreloaditem);
		toolBar.addSeparator();
		toolBar.add(picExit);
		contentPane.add(bar, BorderLayout.CENTER);//网页栏显示位置
		contentPane.add(toolBar, BorderLayout
  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Java Web的新闻客户端是一种运行在web浏览器上的应用程序,用于浏览和阅读新闻内容。它由Java编程语言开发,并通过网络连接到服务器获取新闻数据。 该客户端的架构通常包含三个主要组件:前端页面、服务端逻辑和数据库。 前端页面是用户与应用程序交互的界面,通常由HTML、CSS和JavaScript编写。它可以展示新闻列表、新闻详情,以及提供搜索、筛选等功能。用户可以通过界面上的交互元素来浏览新闻内容,并与应用程序进行交互。 服务端逻辑是应用程序的核心部分,它负责处理前端页面的请求并返回相应的数据。它使用Java编程语言编写,并运行在Java Web服务器(如Tomcat)上。服务端逻辑可以通过HTTP请求与前端页面进行通信,并调用相应的Java库、API或数据库来获取新闻数据,并将其返回给前端页面。 数据库是用于存储新闻数据的使用Java编程语言编写的持久化存储。它可以是关系型数据库(如MySQL)或非关系型数据库(如MongoDB)。数据库中存储着新闻的各种信息,如标题、内容、作者、时间等。 在使用这个新闻客户端时,用户可以通过web浏览器打开客户端网址,并在前端页面上浏览和搜索新闻。客户端向服务端发送请求,服务端根据请求从数据库中获取数据,并将其通过HTTP响应返回给前端页面,前端页面再将数据展示给用户。 基于Java Web的新闻客户端能够实现跨平台的特性,并且具有良好的扩展性和可维护性。它可以为用户提供方便快捷的新闻获取方式,并且可以根据用户需求进行个性化设置,提供更好的用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值