网页浏览器Java课程设计.docx
- 文档编号:15678848
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:34
- 大小:553.60KB
网页浏览器Java课程设计.docx
《网页浏览器Java课程设计.docx》由会员分享,可在线阅读,更多相关《网页浏览器Java课程设计.docx(34页珍藏版)》请在冰点文库上搜索。
网页浏览器Java课程设计
《面向对象程序设计》
课程设计报告
题目:
网页浏览器设计
院(系):
信息科学与工程学院
专业班级:
计算机科学与技术1201班
学生:
程伟
学号:
20121183011
指导教师:
吴奕
2014年12月29日至2015年1月9日
华中科技大学武昌分校制
面向对象程序设计课程设计任务书
一、设计(调查报告/论文)题目
浏览器设计
二、设计(调查报告/论文)主要容
容:
该浏览器要一个图形界面操作,设计的功能类似于WINDOWS操作系统中的IE浏览器。
系统使用Eclipse与JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括需求与总体设计、详细设计、编码实现、系统测试。
在URL地址栏中输入网址,点击转向按钮,该浏览器可以自动转向所指地址页面,显示网页信息,实现浏览器的基本功能,并可实现查看和保存访问页面的HTML源代码。
基本功能与要求:
以下界面实现部分
①实现生成网页浏览器的主体框架
②实现框架上各个组件的时间监听
③图形界面的设计
④组件监听接口的实现
以下功能实现部分
①实现查看源文件的主体框架。
②实现源文件的保存功能,包括另存为即可以将正在访问的网页进行保存。
③前进即访问现有页面的上一个页面;后退即访问现有页面的下一个页面。
④查看源文件功能即查看访问页面的HTML源文件代码。
三、原始资料
1.《面向对象程序设计课程设计》指导书
2.耿祥义.JAVA大学实用教程.:
清华大学,2009.
四、要求的设计(调查/论文)成果
1.课程设计报告
2.课程设计软件
五、进程安排
布置任务,查找资料、需求分析1天
总体设计1天
详细设计1.5天
编制源程序实现3.5天
测试与修改1天
撰写课设报告2天
六、主要参考资料
[1]广彬.Java课程设计案例精编(第二版).:
清华大学,2011.
[2]耿祥义.Java课程设计(第二版).:
清华大学,2008.
[3]耿祥义.JAVA大学实用教程.:
清华大学,2009.
[4]邹林达.国君Java2程序设计基础.:
清华大学,2010.
[5]邹林达.Java2程序设计基础实验指导.:
清华大学,2010.
指导教师(签名):
20年月日
1需求与总体设计
1.1需求分析
此网页浏览器的主要功能描述:
通过在地址栏里面输入URL地址,可以访的
网页。
除此之外,本案例中的网页浏览器还增添了如下几个功能。
1.另存为:
可以将正在访问的页面进行保存。
2.前进:
访问现有页面的上一个页面。
3.后退:
访问现有页面的下一个页面。
4.查看源文件:
查看访问页面的HTML源文件,并且提供保存功能。
1.2总体设计思路
网页浏览器的程序由文件WebBrowser.java与ViewSourceFrame.java两个文件组成。
1)WebBrowser,java
该文件包含名为WebBrowser的public类,其主要功能为生成网页浏览器的主体框架,实现框架上各个组件的事件侦听。
主要包括4个模块:
图形用户界面的构建:
组件监听接口的实现:
文件保存功能的实现:
查看源代码框架的生成。
2)ViewSourceFrame.java
该文件包含名为ViewSourceFrame的类,其主要功能是实现了源文件查看的主体框架,并实现了源文件的保存功能。
主要包括两个模块:
图形用户界面的构建:
组件监听接口的实现。
1.3功能图与类图
2详细设计
2.1详细设计思路
WebBrowser.java文件是网页浏览器的主类文件,生成了网页浏览器的主体框架,并实现框架上各个组件的事件侦听。
PubilicclassWebBrowserextendsJFrameimplementsHyperlinkListener,ActtionListener//建立主件,包括地址栏、界面、地址栏、菜单组、菜单项、工具栏、工具栏中按钮组件、存放历史地址、访问顺序。
publicWebBrowser()/*构造函数,图形化用户界面*/
publicvoidactionPerformed(ActionEvente)/*实现监听器接口的actionPerformed函数*/
voidsaveFile(finalStringurl)//保存文件
voidgetHtmlSource(Stringurl)//获得原文件
publicvoidhyperlinkUpdate(HyperlinkEvente)//实现监听器接口的hyperlinkUpdate函数
publicstaticvoidmain(String[]args)/*生成一个IE对象*/
ViewSourceFrame.java文件的作用是实现网页浏览器中源文件浏览的主体框架并提供了源文件的保存功能。
classViewSourceFrameextendsJFrameimplementsActionListener//建立主件
publicViewSourceFrame(StringhtmlSource)//构造函数,初始化图形用户界面
publicvoidactionPerformed(ActionEvente)//实现监听器接口的actionPerformed函数
2.2复用组件
选择好的容器就是为界面构造一个基本的骨架,然后在其中添加各个组件。
组件复用表:
功能
所复用的组件
菜单组
复用JMenu组件
菜单项
复用JMenuItem组件
工具栏
复用JPanel组件
按钮
复用JButton组件
地址栏
复用JLabel组件
状态栏
复用JPanel组件
滚动条
复用scrollPane组件
菜单栏
复用JMenuBar组件
组件初始化
bar=newJToolBar();//建立工具栏用来显示地址栏
jMenuBar1=newJMenuBar();//建立菜单栏
fileMenu=newJMenu("文件(F)");//建立菜单组
对各个菜单项进行初始化
saveAsItem=newJMenuItem("另存为(A)...");
exitItem=newJMenuItem("退出(I)");
backItem=newJMenuItem("后退");
forwardItem=newJMenuItem("前进");
fullscreenItem=newJMenuItem("全屏(U)");
sourceItem=newJMenuItem("查看源码(C)");
reloadItem=newJMenuItem("刷新(R)");
工具栏与菜单栏的初始化过程类似。
3编码实现
源代码:
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjavax.swing.event.*;
importjavax.swing.border.*;
importjava.io.*;
import.*;
importjava.util.*;
publicclassWebBrowserextendsJFrameimplementsHyperlinkListener,ActionListener{
//建立工具栏用来显示地址栏
JToolBarbar=newJToolBar();
//建立网页显示界面
JTextFieldjurl=newJTextField(60);
JEditorPanejEditorPane1=newJEditorPane();
JScrollPanescrollPane=newJScrollPane(jEditorPane1);
JFileChooserchooser=newJFileChooser();
JFileChooserchooser1=newJFileChooser();
StringhtmlSource;
JWindowwindow=newJWindow(WebBrowser.this);
JButtonbutton2=newJButton("窗口还原");
Toolkittoolkit=Toolkit.getDefaultToolkit();
//建立菜单栏
JMenuBarjMenuBar1=newJMenuBar();
//建立菜单组
JMenufileMenu=newJMenu("文件(F)");
//建立菜单项
JMenuItemsaveAsItem=newJMenuItem("另存为(A)...");
JMenuItemexitItem=newJMenuItem("退出(I)");
JMenueditMenu=newJMenu("编辑(E)");
JMenuItembackItem=newJMenuItem("后退");
JMenuItemforwardItem=newJMenuItem("前进");
JMenuviewMenu=newJMenu("视图(V)");
JMenuItemfullscreenItem=newJMenuItem("全屏(U)");
JMenuItemsourceItem=newJMenuItem("查看源码(C)");
JMenuItemreloadItem=newJMenuItem("刷新(R)");
//建立工具栏
JToolBartoolBar=newJToolBar();
//建立工具栏中的按钮组件
JButtonpicSave=newJButton("另存为");
JButtonpicBack=newJButton("后退");
JButtonpicForward=newJButton("前进");
JButtonpicView=newJButton("查看源代码");
JButtonpicExit=newJButton("退出");
JLabellabel=newJLabel("地址");
JButtonbutton=newJButton("转向");
Boxadress=Box.createHorizontalBox();
//ArrayList对象,用来存放历史地址
privateArrayListhistory=newArrayList();
//整型变量,表示历史地址的访问顺序
privateinthistoryIndex;
/**
**构造函数
**初始化图形用户界面
*/
publicWebBrowser(){
setTitle("网页浏览器");
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//为jEditorPane1添加事件侦听
jEditorPane1.addHyperlinkListener(this);
//为组件fileMenu设置热键‘F’
fileMenu.setMnemonic('F');
saveAsItem.setMnemonic('S');
//为“另存为”组件设置快捷键为ctrl+s
saveAsItem.setAccelerator(KeyStroke.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.setMnemonic('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.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.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));
ContainercontentPane=getContentPane();
//设置大小
scrollPane.setPreferredSize(newDimension(100,500));
contentPane.add(scrollPane,BorderLayout.SOUTH);
//在工具栏中添加按钮组件
toolBar.add(picSave);
toolBar.addSeparator();
toolBar.add(picBack);
toolBar.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(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(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.addActionListener(this);
button.addActionListener(this);
jurl.addActionListener(this);
}
/**
**实现监听器接口的actionPerformed函数
*/
publicvoidactionPerformed(ActionEvente){
Stringurl="";
//点击转向按钮
if(e.getSource()==button){
//获得地址栏的容
url=jurl.getText();
//url不为“”,并且以“”开头
if(url.length()>0&&url.startsWith("")){
try{
//JEditorPane组件显示url的容
jEditorPane1.setPage(url);
//将url的容添加到ArrayList对象history中
history.add(url);
//historyIndex的数值设为history对象的长度-1
historyIndex=history.size()-1;
//重新布局
jEditorPane1.setEditable(false);//addbycopyeditor:
)
jEditorPane1.revalidate();
}
catch(Exceptionex){
//如果显示失败,则弹出选择对话框“无法打开该搜索页”
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//url不为“”,并且不以“”开头
elseif(url.length()>0&&!
url.startsWith("")){
//在url前面添加“”
url=""+url;
try{
jEditorPane1.setPage(url);
history.add(url);
historyIndex=history.size()-1;
jEditorPane1.setEditable(false);//addbycopyeditor:
)
jEditorPane1.revalidate();
}
catch(Exceptionex){
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//没有输入url,即url为空
elseif(url.length()==0){
JOptionPane.showMessageDialog(WebBrowser.this,"请输入地址","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//输入地址后点击回车
elseif(e.getSource()==jurl){
url=jurl.getText();
if(url.length()>0&&url.startsWith("")){
try{
jEditorPane1.setPage(url);
history.add(url);
historyIndex=history.size()-1;
jEditorPane1.setEditable(false);//addbycopyeditor:
)
jEditorPane1.revalidate();
jurl.setMaximumSize(jurl.getPreferredSize());
}
catch(Exceptionex){
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
elseif(url.length()>0&&!
url.startsWith("")){
url=""+url;
try{
jEditorPane1.setPage(url);
history.add(url);
historyIndex=history.size()-1;
jEditorPane1.setEditable(false);//addbycopyeditor:
)
jEditorPane1.revalidate();
}
catch(Exceptionex){
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开该搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
elseif(url.length()==0){
JOptionPane.showMessageDialog(WebBrowser.this,"请输入地址","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//另存为...
elseif(e.getSource()==picSave||e.getSource()==saveAsItem){
url=jurl.getText().toString().trim();
if(url.length()>0&&!
url.startsWith(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网页浏览器 Java 课程设计