Java课程设计.docx
- 文档编号:13144265
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:26
- 大小:26.30KB
Java课程设计.docx
《Java课程设计.docx》由会员分享,可在线阅读,更多相关《Java课程设计.docx(26页珍藏版)》请在冰点文库上搜索。
Java课程设计
一、引言
Java语言的出现迎合了人们对应用程序跨平台运行的需求,已成为软件设计开发者应当掌握的一们基础语言,很多新的技术领域都涉及到了java语言。
为了巩固学习的面向对象程序设计语言的知识,通过编写Java的应用系统综合实例,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握。
本课程设计题目是《网页浏览器开发》,类似于生活中的IE浏览器,其具有简单的网页访问、保存,以及操作的前进、后退等功能。
其间主要运用的知识是事件处理、Swing相关组件和输入输出的基本知识等。
二、需求分析
Java这门语言是具有简单、面向对象、可分布、可解释、强壮、安全性、结构化、轻便、功能强大、多线程、动态等特征的高级程序语言。
Java既可以被编译,也可以被解释。
Java的不断发展完善,吸引了大量软硬件业者参与到这个行列中来。
在人们的日常生活中,上网是再平常不过的活动,而网页浏览器是必要的工具。
本次编写的网页浏览器开发实例具有简单的网页访问功能,保存网页功能,以及操作的前进、后退功能,刷新功能,查看原代码功能。
三、概要设计
通过在地址栏中输入URL地址,可以访问相应的网页。
除此之外,本案例中的网页还有以下几个功能:
另存为,可以将正在访问的页面保存;前进,访问现有页面的下一个页面;后退:
访问现有页面的上一个页面;查看源文件,查看访问页面的HTML源文件,并且提供保存功能。
网页浏览器的程序由文件WebBrowser.java与ViewSourceFrame.java两个文件组成。
(1)WebBrowser.java
包含名为WebBrowser的类,其主要功能为生成网页浏览器的主题框架,实现框架上各个组件的时间侦听。
主要包括4个模块:
图形用户界面的构件;组件监听接口的实现;文件保存功能的实现;查看源代码框架的生成。
本部分实现了网页的主题框架。
并通过main函数,将界面的风格设置成为“跨平台”风格,创建了一个WebBrowser对象显示出来
(2)ViewSourceFrame.java
包含名为ViewSourceFrame的类,砌筑要功能是实现了源文件查看的主题框架,并实现了文件的保存功能。
主要包括两个模块:
图形拥护界面的构建;组件监听接口的实现
四、详细设计
/******
WebBrowser.java文件
案例主程序
***/
importjava.awt.*;
importjavax.swing.*;
importjavax.swing.text.*;
importjava.awt.event.*;
importjavax.swing.event.*;
importjavax.swing.border.*;
importjavax.swing.filechooser.FileFilter;
importjavax.swing.filechooser.FileView;
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("视图(E)");
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);
//为jEditorPanel添加事件侦听
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不为“”,并且以"http:
//"开头
if(url.length()>0&&url.startsWith("http:
//")){
try{
//jEditorPane1组件显示url的内容链接
jEditorPane1.setPage(url);
//将url的内容添加到ArrayList的对象history中
history.add(url);
//historyIndex的数值设为history对象的长度-1
historyIndex=history.size()-1;
//设置成非编辑状态jEditorPane1.setEditable(false);
//重新布局
jEditorPane1.revalidate();
}
catch(Exceptionex){//如果链接失败,则显示无法打开搜索页
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//url不为"",并且不以"http:
//"开头
elseif(url.length()>0&&url.startsWith("http:
//")){
//在url前面添加"http:
//"
url="http:
//"+url;
try{jEditorPane1.setPage(url);
history.add(url);
historyIndex=history.size()-1;
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()==jurl){
url=jurl.getText();
if(url.length()>0&&url.startsWith("http:
//")){
try{
jEditorPane1.setPage(url);
history.add(url);
historyIndex=history.size()-1;
//设置成非编辑状态jEditorPane1.setEditable(false);
jEditorPane1.revalidate();
jurl.setMaximumSize(jurl.getPreferredSize());
}
catch(Exceptionex){
JOptionPane.showMessageDialog(WebBrowser.this,"无法打开搜索页","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
elseif(url.length()>0&&!
url.startsWith("http:
//")){
url="http:
//"+url;
try{
jEditorPane1.setPage(url);
history.add(url);
historyIndex=history.size()-1;
//设置成非编辑状态jEditorPane1.setEditable(false);
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("http:
//")){
url="http:
//"+url;
}
if(!
url.equals("")){
//保存文件
saveFile(url);
}
else{JOptionPane.showMessageDialog(WebBrowser.this,"请输入链接地址","网页浏览器",JOptionPane.ERROR_MESSAGE);
}
}
//退出
elseif(e.getSource()==exitItem||e.getSource()==picExit){
System.exit(0);
}
//后退
elseif(e.getSource()==picBack||e.getSource()==backItem){
historyIndex--;
if(historyIndex<0)
historyIndex=0;
url=jurl.getText();
try{
//获得history对象中本地址之前访问的地址
url=(String)history.get(historyIndex);
jEditorPane1.setPage(url);
jurl.setText(url.toString());
//设置成非编辑状态jEditorPane1.setEditable(false);
jEditorPane1.revalidate();
}
catch(Exceptionex){}
}
//前进
elseif(e.getSource()==forwardItem||e.getSource()==picForward){
historyIndex++;
if(historyIndex>=history.size())
historyIndex=history.size()-1;
url=jurl.getText();
try{
//获得history对象中本地址之后访问的地址
url=(String)history.get(historyIndex);
jEditorPane1.setPage(url);
jurl.setText(url.toString());
//设置成非编辑状态jEditorPane1.setEditable(false);
jEditorPane1.revalidate();
}
catch(Exceptionex){}
}
//全屏
elseif(e.getSource()==fullscreenItem){
booleanadd_button2=true;
//获得屏幕大小
Dimensionsize=Toolkit.getDefaultToolkit().getScreenSize();
Containercontent=window.getContentPane();
content.add(bar,"North");
content.add(scrollPane,"CENTER");
//button2为单击全屏后的还原按钮
if(add_button2==true){
bar.add(button2);
}
//为button2添加事件
button2.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevt){
WebBrowser.this.setEnabled(true);
window.remove(bar);
window.remove(toolBar);
window.remove(scrollPane);
window.setVisible(false);
scrollPane.setPreferredSize(newDimension(100,500));
getContentPane().add(scrollPane,B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计