搜档网
当前位置:搜档网 › 基于Java的浏览器的设计与实现

基于Java的浏览器的设计与实现

基于Java的浏览器的设计与实现
基于Java的浏览器的设计与实现

基于Java的浏览器的设计与实现

摘要本课程设计主要运用java语言在Eclipse编程环境下设计一个Web浏览器,从而在Windows 98/2000/XP程序运行平台上来实现它的一些基本功能,本课程设计基本实现了预定目标。浏览器的设计包括了图形界面设计和底层设计,在整个设计过程中需要首先构建好图形界面,然后再编程来实现组件以完成相应的功能,浏览器图形界面作为系统和用户之间反馈信息的平台,起着尤为关键的作用。

1 引言

当今世界是一个以计算机网络为核心的信息时代,互联网为人们快速获取、发布和传递信息提供了便捷,而浏览器作为互联网上查找信息的重要工具,给人们提供了巨大而又宝贵了信息财富,受到了大家的高度重视。网页浏览器是显示网页服务器或档案系统内的文件,并让用户与这些文件互动的一种软件。它用来显示在万维网或局域网内的文字、影像及其他资讯。浏览器作为重要的系统应用软件是不可或缺的。但目前,浏览器产品的市场被少数国外大公司垄断,众多的小型浏览器也尚处于发展期,而国内的自主技术的浏览器更屈指可数,刚刚进入实用阶段。迫切需要更多的人来关注浏览器技术,开发中国自主知识产权的浏览器产品。

1.1 项目设计目的

此次课程设计的目的首先是让我们了解信息产业的多元性,把学到的知识运用到实际中,培养学生的综合模拟和实际操作能力,提高学生理论联系实际的能力,开拓创新;其次是掌握使用Eclipse工具设计一个简单的Web浏览器的方法,从而实现对资源的有效访问;掌握Java语言编程,并可综合运用这些知识解决一定的实际问题,使我们在所学知识的综合运用能力上以及分析问题、解决问题能力上得到一定的提高;认识到团队精神的重要性,能够通过良好的分工合作来完成既定目标。

1.2 项目设计内容

(1)熟悉超文本传送协议(HTTP)进行通信;

(2)熟悉Eclipse编程环境及Swing、网络编程方法;

(3)理解B/S工作模式;

(4)实现简单的浏览器程序;

1.3 项目设计要求

(1)按要求编写课程设计报告书,能正确阐述设计结果。

(2)通过课程设计培养学生严谨的科学态度、认真的工作作风和团队协作精神。

(3)学会文献检索的基本方法和综合运用文献的能力。

(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

2所用开发环境

Eclipse是一个开放源代码的、基于Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Tools,JDT)。

它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。

Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用于Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse 拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse 为框架开发自己的IDE。[1]

2.2 JDK简介

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从

Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。

JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Environment),Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK。

JDK包含的基本组件包括:

·javac –编译器,将源程序转成字节码

·jar –打包工具,将相关的类文件打包成一个文件

·javadoc –文档生成器,从源码注释中提取文档

·jdb – debugger,查错工具

·java –运行编译后的java程序(.class后缀的)

appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。

Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。

Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。

Jconsole: Java进行系统调试和监控的工具

3设计原理

3.1 JAVA语言简介

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java 被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。

Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java 应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java 平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java分为三个体系JavaSE(Java2 Platform Standard Edition,java 平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。

Java主要特性:Java语言是简单的、面向对象的、分布式的、健壮的、安全的、体系结构中立的、可移植的、解释型的、高性能的、多线程的、动态的。

3.2 图形用户界面(GUI)

图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户介面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。如Windows是以图形界面方式操作的,因为你可以用鼠标来点击按钮来进行操作,很直观。

GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。GUI由桌面、视窗、单一文件界面、多文件界面、标签、菜单、图标、按钮这几部分组成。[2]

3.3 Java Swing概述

Swing是一个用于开发Java应用程序用户界面的开发工具包,并以此为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。

Swing是建立在AWT之上的,包括大多数轻量组件的组件集。除提供了AWT 所缺少的、大量的附加组件外,Swing还提供了替代AWT重量组件的轻量组件。Swing还包括了一个使人印象深刻的、用于实现包含插入式界面样式等特性的图形用户界面的下层构件。因此,在不同的平台上,Swing组件都能保持组件的界面样式特性,如双缓冲、调试图形和文本编辑包等。还具有以下特点:(1)拥有一个丰富、便捷的用户界面元素集合。

(2)对底层平台依赖的很少,因此与平台相关的bug很少。

(3)给予不同平台的用户一致的感官效果。

3.4抽象窗口工具箱(AWT)

AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt 包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。

抽象窗口工具包(Abstract Windowing Toolkit)(AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包。AWT是Java基础类(JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。AWT可用于Java的applet和applications中。它支持图形用户界面编程的功能包括:用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。

3.5布局算法

本文中的布局应理解为界面输出前的预演和处理位置等信息的算法,而不是具体的画图和界面输出。布局算法的好坏直接关系到界面的输出效果,但布局算法也是要根据GUI所能实现的输出效果来设计的,所以,GUI往往成为系统的瓶颈,如果GUI提供的支持有限,即使有再好的布局算法,也是纸上谈兵,无用武之地。在Swing中有以下几种简单的布局管理器:

(1)FlowLayout流式布局管理器

FlowLayout是最简单的布局管理器,按照组件的添加次序将它们从左到右地放置在容器中。当到达容器边界时,组件将放置在下一行中。

(2)BorderLayout边界布局管理器

BorderLayout为在容器中放置组件提供了一个稍微复杂的布局方案。BorderLayout把容器分为五个区域:东、南、西、北和中。东占据容器的右侧,南占据容器的下侧,以此类推。

(3)GridLayout网格布局管理器

GridLayout将容器分割成许多列和行,组件被填充到每个网格中。添加到容

器中的组件首先放置在左上角的网格中,然后从左到右放置其他组件,直至占满该行的所有网格,接着继续在下一行中从左到右放置组件。

(4)CardLayout卡片式布局管理器

CardLayout将界面看作一系列的卡片,在任何时候只有其中一张卡片是可见的,这张卡片占据容器的整个区域。

当某个容器被创建后,就会有一个默认的布局管理器。Window、Frame和Dialog的默认布局管理器是BorderLayout,Panel和Applet的默认布局管理器是FlowLayout。可以调用容器的setLayout()方法来设置容器的布局管理器。[3]

4 浏览器的设计

4.1功能需求的分析

我们所设计的浏览器功能比较简单,主要概括为以下几点:

(1) 界面:包括窗口,菜单,输入框,工具条,滚动条等的支持。

(2) 实现简单网页的布局,对简单网页的查看。

(3)具有超链接功能。

(4) 能够返回到主页面。

(5) 支持基本IO(Input/Output,输入/输出)。

(6)能够打开本地文件。

4.2设计步骤

我在整个团队中主要负责界面的设置,界面是一个直接反映信息交互的平台,起着举足轻重的作用,在这里我就怎样构建用户界面作为重点进行阐述。

1.容器嵌套

选择好容器就是为界面构造一个基本的骨架,然后再在其中添加各个组件。在GUI中可供选择的容器有Frame, Dialog, Applet, Panel,其中Panel是可视容器,Frame是顶级容器。我们要用Panel和Frame容器。继承顶级容器的方法、功能和参数,将菜单栏置于顶级容器;在次级容器contentpan中加入了工具栏、状态栏、滚动条、编辑区域等,然后用边界布局管理器将所需的组件添加进来,具

体所需组件如下表所示:

表4-1 组件复用表

2.组件定义

与其他编程语言类似,在JAVA中也必须首先对变量以及所要用到的组件定义,确定其合法性,才能在后面的程序中被调用赋值。定义代码如下:private Container contentPane; //变量内容窗格

private JTextField addressTex; //文本框

private JLabel statusLbl; //状态栏

用private分别对滚动条、编辑显示区域、菜单栏、文件选择框、按钮等进行定义。

3.组件初始化、添加和监听

mb=new JMenuBar(); // 初始化菜单栏

m1=new JMenu("File"); // 初始化菜单

m2=new JMenu("Edit");

m3=new JMenu("View");

mb.add(m1); // 将菜单加入菜单栏

mb.add(m2);

mb.add(m3);

//对File菜单各个菜单项初始化

mi1=new JMenuItem("Open File");

mi2=new JMenuItem("Close");

mi3=new JMenuItem("Quit");

Edit、View菜单的各个菜单项进行初始化过程与之类似

//对File菜单各个菜单项进行监听

mi1.addActionListener(new OpenFileActionListener());

mi2.addActionListener(new QuitActionListener());

mi3.addActionListener(new QuitActionListener());

4.设置布局

pp.setBackground(Color.pink); // 设置颜色

pp.setLayout(new FlowLayout()); // 流式布局管理器,对组件由左至右布局pp.add(btn2);//对按钮UNDO布局

pp.add(addressTex); //对地址栏布局

pp.add(btn1); //对按钮GOTO布局

contentPane.add(pp,BorderLayout.NORTH); //将工具栏放置在界面的北方

contentPane.add(statusLbl,BorderLayout.SOUTH);

//状态栏布置在界面的南边

centerPane = new JScrollPane(); // 浏览器体部布置在界面中央

JViewport view = centerPane.getViewport(); // 显示区域

textArea = new JEditorPane(); // 内容显示

5. 按钮功能的实现

每个按钮需要对应到相应的功能。我们设计的浏览器只有UNDO和GOTO 两个按钮。UNDO对应浏览页面的后退浏览,实现这个功能是在监听到用户点击此按钮时后退到上一浏览页面。而GOTO就是当系统监听到地址栏有地址写入时,浏览器先判断这个地址长度是否大于零并且此地址是不是以HTTP开头,如果是,则浏览器主动链接到目的地址;若判断出这个地址长度大于零并且此地址不是以HTTP开头,则在地址前面自动加上HTTP,找到目的地址。

5浏览器的实现

5.1 GOTO按钮功能测试

在程序中地址栏默认网址为“https://www.sodocs.net/doc/b37868824.html,/”,点击Goto按钮,进入百度主页,如图5.1所示:

图5.1点击Goto进入百度主页截图

5.2测试菜单栏选项

在地址栏中输入“https://www.sodocs.net/doc/b37868824.html,/”,可以进入Google主页,依次点开File、Edit、View菜单测试器有效性,如下图所示:

图5.2主菜单File的子菜单实现图

图5.3 主菜单Edit的子菜单实现图

图5.4主菜单View的子菜单实现图

点击打开File菜单中的open file按钮时,则打开本地文件。如图5.5所示:

图5.5 主菜单File中OpenFile的实现

5.3超链接的实现

在百度主页中点击“更多”,可直接链接到下一显示页面,证明浏览器实现了链接功能,再点击“Undo”按钮,页面又可返回到百度主页。超链接的实现如图5.6所示:

图5.6 超链接的实现图

经过以上几个步骤的测试,图形界面的设计能够与底层设计达到完美

契合,因此我们团队所设计的浏览器实现了预定功能,基本达到了此次课

程设计的要求,浏览器设计成功。

6 结束语

这次课程设计历时两个星期,在这两个星期的学习中,我初步掌握了有关JAVA的基础知识,能够理解较为简单的JAVA程序,基本实现课程设计的要求。我认为这次课程设计最大的收获是深刻地认识到了团队合作的重要性。

在以往的课内学习中,我个人懂得了较多的理论知识,同时也进行了上机实践加强自己对理论的理解并提升了实际操作能力。而本次课程设计相对于实验又有了质的飞跃,我们通过最初的特色组队、确立团队目标,然后缜密构思、分工合作,最终实现了我们设计的浏览器的基本功能。这一路做过来,我们多次请教了老师,翻阅了有关参考书,最重要的是进行了团队激烈的讨论,遇到问题再解决问题然后再发现问题再解决的思想火花的碰撞……在这一过程的循环往复中我深深地体验到了思考和学习的乐趣。在享受这一过程中,我不仅学到了新的知识,我的思维也更加开阔、更加灵活、更加全面了。

短短的几星期中,我有过失败的沮丧,也有过成功的欣喜。在一次次的挫折和失败中我不断寻找真理,寻找解决问题的最佳途径,更加深刻地体会到了“失

败乃成功之母”的含义,惰性和轻易放弃成了我最大的敌人,很庆幸,我战胜了它们,其实是战胜了自己,最终赢得了硕果。如同需要浇灌才能长成的硕果一样,我的最终成果也是用辛勤汗水培育而来的,当然也离不开老师的耐心指导和同学的无私帮助。在这里我也要对敬爱的老师和同学们的深切关怀表示衷心的感谢!

对我而言,知识上的收获固然重要,精神上的丰收更加可贵。面对生活其实也是相同的道理,不抛弃不放弃是成功的前提。人生是在不断地攀登中提升的,山的绵延组成了曲折的人生,当我们经历过风雨最终爬到顶峰看到美轮美奂的日出时,一切艰难都显得苍白无力。挫折是一份财富,经历是一份拥有。感谢大家让我拥有这份最珍贵的财富!

参考文献

[1] 2004马俊范玫.JAVA语言面向对象程序设计.机械工业出版社. 2009年

[2]于万波.Java语言实用教程. 清华大学出版社.2008年

[3]刘亚滨.精通Eclipse.北京:电子工业出版社.2004

附录1:Web服务器设计与实现源程序清单% 程序功能::Web服务器设计与实现

% 程序作者:陈璐

% 最后修改日期:2009-07-03

package com.briup.browser;

import java.awt.BorderLayout;

import java.awt.Color;

import https://www.sodocs.net/doc/b37868824.html,ponent;

import java.awt.Container;

import java.awt.FileDialog;

import java.awt.FlowLayout;

import java.awt.Frame;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedInputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.FilenameFilter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import https://www.sodocs.net/doc/b37868824.html,.MalformedURLException;

import https://www.sodocs.net/doc/b37868824.html,.URL;

import java.util.ArrayList;

import java.util.Date;

import java.util.Iterator;

import javax.swing.JButton;

import javax.swing.JEditorPane;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JProgressBar;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

import javax.swing.JTree;

import javax.swing.JViewport;

import javax.swing.event.HyperlinkEvent;

import javax.swing.event.HyperlinkListener;

import javax.swing.text.html.HTMLDocument;

import javax.swing.text.html.HTMLFrameHyperlinkEvent; import javax.swing.tree.DefaultMutableTreeNode; import com.briup.browser.Browser;

public class Browser extends JFrame{

private Container contentPane;

private JTextField addressTex;//文本框

private JLabel statusLbl;

private JScrollPane centerPane;//初始化滚动条

private JEditorPane textArea;//编辑显示区域

private JMenuBar mb;

// 文件选择框

private JFileChooser chooser1=new JFileChooser(); private JButton btn1,btn2,btn3;

private ArrayList list;

private JMenu m1,m2,m3;

// 菜单项

private JMenuItem

mi1,mi2,mi3,mi4,mi5,mi6;

public Browser(String title){

super(title);

setBounds(120,80, 750, 500);

setDefaultCloseOperation(

this.EXIT_ON_CLOSE);

contentPane = this.getContentPane();

initGUI();

// 初始化菜单栏

mb=new JMenuBar();

// 初始化菜单

m1=new JMenu("File");

m2=new JMenu("Edit");

m3=new JMenu("View");

// 将菜单加入菜单栏

mb.add(m1);

mb.add(m2);

mb.add(m3);

setJMenuBar(mb);

// 对File菜单各个菜单项初始化

// 初始化菜单项

mi1=new JMenuItem("Open File");

mi1.addActionListener(new OpenFileActionListener());

mi2=new JMenuItem("Close");

mi2.addActionListener(new QuitActionListener());

mi3=new JMenuItem("Quit");

mi3.addActionListener(new QuitActionListener());

// 对Edit菜单的各个菜单项进行初始化

mi4=new JMenuItem("Cut");

mi5=new JMenuItem("Copy");

// 对View菜单的各个菜单项进行初始化,并添加监听

mi6=new JMenuItem("State Bar");

// 将菜单项加入到file菜单

m1.add(mi1);

m1.add(mi2);

m1.add(mi3);

// 将菜单项加入到Edit菜单

m2.add(mi4);

m2.add(mi5);

// 将菜单项加入到view菜单

m3.add(mi6);

}

private void initGUI() {

contentPane.setLayout(new BorderLayout());

// 地址栏

addressTex = new JTextField(40);

addressTex.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

String address =

addressTex.getText().trim();

try{

if(addressTex.getText().length()>0&&

addressTex.getText().startsWith("http://"))

textArea.setPage(address);

else if(addressTex.getText().length()>0&&

!addressTex.getText().startsWith("http://"))

{String newURL="";

newURL="http://"+addressTex.getText();// 加http:

URL newurl=new URL(newURL);

addressTex.setText(newURL);

textArea.setPage(newurl);

}} catch (IOException e1) {

e1.printStackTrace();

}

}

});

btn1 = new JButton("Goto");

btn1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

String address =

addressTex.getText().trim();

try{

if(addressTex.getText().length()>0&&

addressTex.getText().startsWith("http://"))

textArea.setPage(address);

else if(addressTex.getText().length()>0&&

!addressTex.getText().startsWith("http://"))

{String newURL="";

newURL="http://"+addressTex.getText();// 加http:

URL newurl=new URL(newURL);

addressTex.setText(newURL);

textArea.setPage(newurl);

}} catch (IOException e1) {

e1.printStackTrace();

}

}

});

btn2 = new JButton("Undo");

btn2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

String address =

addressTex.getText().trim();

try{

if(addressTex.getText().length()>0&&

addressTex.getText().startsWith("http://"))

textArea.setPage(address);

else if(addressTex.getText().length()>0&&

!addressTex.getText().startsWith("http://"))

{String newURL="";

newURL="http://"+addressTex.getText();// 加http:

URL newurl=new URL(newURL);

textArea.setPage(newURL);

}} catch (IOException e1) {

e1.printStackTrace();

}

}

});

JPanel pp = new JPanel();

// 设置颜色

pp.setBackground(Color.pink);

pp.setLayout(new FlowLayout());

pp.add(btn2);

pp.add(addressTex);

pp.add(btn1);

contentPane.add(pp,BorderLayout.NORTH);

//状态栏

statusLbl = new JLabel("status: ");

contentPane.add(statusLbl,BorderLayout.SOUTH);

// 浏览器体部

centerPane = new JScrollPane();

// 显示区域

JViewport view = centerPane.getViewport();

// 内容显示

textArea = new JEditorPane();

// 监听超链接,使其生效

textArea.addHyperlinkListener

(new HyperlinkListener(){

public void hyperlinkUpdate(HyperlinkEvent e) {

if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {

JEditorPane pane = (JEditorPane) e.getSource();

if (e instanceof HTMLFrameHyperlinkEvent) {

HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e;

HTMLDocument doc = (HTMLDocument)pane.getDocument();

doc.processHTMLFrameHyperlinkEvent(evt);

} else {

try {

pane.setPage(e.getURL());

} catch (Throwable t) {

t.printStackTrace();

}

}

}

}

});

addressTex.setText("https://www.sodocs.net/doc/b37868824.html,/");

// 设置不可写操作

textArea.setEditable(false);

view.add(textArea);

contentPane.add(centerPane);

}

// 撤销按钮

class UndoActionListener implements ActionListener{

public void actionPerformed(ActionEvent e) {

btn2.setEnabled(true);

int index=list.indexOf(addressTex.getText());

if(index-1>=0){

String preURL=(String)list.get(index-1);

addressTex.setText(preURL);

if((list.indexOf(preURL))==0){

btn1.setEnabled(false);

}

try {

URL url=new URL(preURL);

textArea.setPage(url);

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

// 选择打开文件

class MyFilenameChooser implements FilenameFilter{

public boolean accept(File dir,String name){

return name.endsWith("html");

}

}

// 打开文件

public void openFile(String fileName){

try {

URL url=new URL("file"+":///"+fileName);

addressTex.setText(url.toString());

} catch (Exception e1) {

JOptionPane.showMessageDialog

(null,"打开失败!","?openopen打开文件

",JOptionPane.ERROR_MESSAGE);

}

}

// 打开文件

class OpenFileActionListener implements ActionListener{

public void actionPerformed(ActionEvent e) {

FileDialog fd=new FileDialog(new Frame(),

"Open a file",FileDialog.LOAD);

FilenameFilter ff=new MyFilenameChooser();

fd.setVisible(true);

String name=fd.getFile();

openFile(fd.getDirectory()+name);

}

}

public boolean filter(String strURL){

FileReader fr=null;

BufferedReader br=null;

boolean flag=true;

try {

br=new BufferedReader(fr);

String temp=null;

while((temp=br.readLine())!=null){

if(temp.equals(strURL))

flag=false;

else

flag=true;

}

return flag;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

计算器java课程设计(完整版)

《面向对象程序设计》课程设计报告 课程设计题目:计算器 学生姓名:李婉如 专业:信息管理与信息系统 班级:1424603 指导教师:司红伟 2016年 5 月 25 日

一、课设任务及要求 1)课设任务: ⑴设计的计算器应用程序可以完成加法、减法、乘法、除法以及取余运 算(可以进行浮点数和负数的运算)。 ⑵有求倒数、退格和清零功能。 2)创新要求: 能进行正切、余弦,以及求平方根、指数(包括对e)、自然对数运算。 3)设计要求 ①设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 ②课程设计可选用Eclipse、JBuilder、NetBeans等作为开发平台以提高开发效率,通过资料查阅和学习尽可能熟练掌握其中一种集成开发环境。 ③认真按时完成课程设计报告,课程设计报告内容包括:设计任务与要求、需求分析、设计思路、详细设计、运行调试与分析讨论和设计体会与小结六个部分。

二、设计思路 ⑴本应用程序继承自框架类(JFrame),容器Container c采用BorderLayout 边缘布局,将单行文本框加入到“North”区域,包含各种按钮的面板JPanel p加入到”Center”区域。包含各种按钮的面板JPanel p 采用3行6列的网格布局,然后将数字按钮和运算符按钮以及控制按钮用一个for循环添加到面板中同时注册按钮事件监听器。如: Button b=new Button(); b.addActionListener(事件监听器); ⑵事件监听器中的事件处理方法void actionPerformed(ActionEvent evt)完成主要的按钮事件的处理。事件处理分以下几种情况:数字按钮事件(”0”,”1”,”2”…”8”,”9”)、运算符按钮事件(”+”,”-“,”*”,”/”,”%”)、正负号按钮事件(”+/-“)、小数点按钮事件(”.”)、等号按钮事件(”=”)、求倒按钮事件(”求倒”)、退格按钮事件(”退格”)、清除按钮事件(“C”) 、正切(tan)、余弦(cos),以及求平方根(sqrt)、指数(pow)、对e的指数(exp)、对数运算(log)。 ⑶在事件处理,触发按钮事件时,先判断是或是数字是或是“-/+”是或是“.”,是的话就将负号“-”、数字、小数点“.”分别写入文本框并存放在sum中,然后判断是或是“退格”、“求倒”等,是的话进行相应的处理,都不是的话则跳到doOperation()执行运算同时将运算符存放在preOperater中。触发按钮事件时,要进一步分析,是重新开始计算时触发的按钮事件还是计算中间触发的按钮事件。 ⑷计算器完成的是一个数学表达式,如:3+2,所以可以采用一个数组来存储数字或字符,如3,+,2分别存储在数组中,最后运算时,可以一一取出来进行运算。 ⑸利用按钮设计计算器的各个运算符和操作符,通过按钮的事件处理实现按钮计算功能。 ⑹利用文本框显示操作数和运算结果。

Java课程设计参考范文

基于B/S模式的小区物业管理系统的设计与实现 计算机科学与技术2009级一班 学生姓名:陆国良指导老师:陶世明 摘要:相比于C/S模式的物业管理系统,B/S模式的管理系统却极少。做一个B/S模式的物业管理系统,既可以让业主使用,又可以让物业管理人员使用,通过这个系统,获取到各自需要的信息,从而给管理带来便利。这也是我们开发物业管理系统的初衷。住户最基本的要求有以下几点:界面的友好性、易用性、实用性和吸引性。本设计将从以上几个方面进行系统的开发工作。物业管理人员除了有住户的以上要求外,管理的便利性也要考虑。在系统的开发中,使用JavaScript、CSS样式和HTML对界面进行布局,然后使用DOTNET平台下C#语言进行全面的开发,其中使用了三层架构的思想。 关键词:C/S, B/S, DOTNET, 三层架构 一、前言 物业管理系统在市场上已经是一项相当成熟的技术,例如思源物业,凤凰物业等。他们为许多开发物业管理的开发人员提供了成功的案例。为什么要使用信息化系统呢?在以前我们不都是使用一张纸,一支笔就搞定了么,为什么还要兴师动众来开发这样一个系统呢。下面进行一下前后的对比。 手工模式 ?传统的文档记录管理模式,易出错丢失; ?采用人工统计核算,工作量大且容易出错; ?不利于公司领导了解各部门的工作情况,影响企业整体决策; ?管理缺乏有效控制,工作流程不够规范; ?服务不及时,客户满意度低; 信息化后 ?数据管理容易; ?采用计算机进行运算,效率高且精确; ?操作简单方便; ?能够充分利用资源,做出合理的安排; 之所以人们对物业管理系统津津乐道,主要是因为小区是城市生活的基本单位,小区的管理直接影响到我们的生活质量。系统有使用Java开发的,有使用.Net开发的,有基于B/S模式的,有基于C/S 模式的,它们的共同出发点都是开发出高效的,便于管理的物业管理系统,这也是许多物业公司不惜高

JAVA实现计算器课程设计

JAVA实现计算器课程设计 计算机科学系 计应0701班 指导老师:刘其昌 设计人员:陈秀桃 设计日期:2009年11月10日——2009年12月20日 计算器的设计 目录 第一章绪 论 ..................................................................... .. (2)

1.1 开发环 境 ..................................................................... . (2) 1.2 基本功能介 绍 ..................................................................... ......... 2 第二章系统设 计 ..................................................................... (3) 2.1 系统流程 图 ..................................................................... . (3) 2.2 系统功能框 图 ..................................................................... (3) 2.3 需求分 析 ..................................................................... ................ 4 第三章软件设 计 ..................................................................... (5) 3.1 界面设 计 ..................................................................... . (5) 3.2 代码设 计 .....................................................................

简易浏览器设计报告

目录 目录 (1) 一、课程设计的目的与要求 (2) 二、题目说明 (2) 2.1程序开发背景................................................................... 错误!未定义书签。 2.2开发工具介绍 (2) 三、总体设计 (2) 3.1.系统开发平台: (2) 这个简易浏览器由Java语言编写,用Eclipse编译执行 (2) 3.2.系统流程图: (3) 3.3功能结构图: (3) 四、详细说明 (4) 4.1 系统实施 (4) 五、遇到的问题和解决方法 (9) 六、课程设计总结 (10)

一、课程设计的目的与要求 加深学生对面向对象概念以及JAVA面向对象程序设计思想的理解和掌握;使学生熟悉开发一个项目的基本过程,培养学生分析问题和解决问题的能力,增强学生的动手能力。为后续学习和应用打下一定的基础。 二、题目说明 本程序实现一个简单的浏览器。用户通过在URL输入框中输入要下载的网络页面的网址,并点击浏览器界面上相应的按钮,或直接按回车键,就能完成网络页面下载的功能。同时,它还支持浏览本地HTML文件,用户在输入框中输入文件所在盘符及具体路径,并按回车键,或者点击界面上相应按钮,实现浏览本地文件的功能。它能够实现页面的文本链接,能够显示网页图片,并能够通过相应按钮的操作返回上一次访问的页面,还可以通过相应按钮返回后退之前访问的页面。该简易浏览器能帮助用户实现基本的网页浏览功能。 2.2开发工具介绍 三、总体设计 3.1.系统开发平台: 这个简易浏览器由Java语言编写,用Eclipse编译执行

java课设记事本说明书

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2012年秋季学期 Java 课程设计 题目:记事本系统设计 专业班级: 姓名: 学号: 指导教师: 成绩:

目录 摘要 (1) 序言 (2) 正文 (3) 1.系统设计与分析 (3) 2.详细设计 (3) 3.系统测试 (14) 4.软件使用说明书 (17) 设计总结 (18) 参考文献 (19) 致谢 (20) 附录(程序源代码) (21)

摘要 本次课程设计的题目是用java语言编写记事本程序,要求是:用图形界面实现;含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。 本程序主要用到了Java swing组件和事件监听器,还用到了文件的输入输出流。记事本的界面参考了Windows中的记事本界面,并且根据课程设计要求做了适当的调整。 关键字:记事本程序;Java语言;Jcreator

序言 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。 在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少, 所以选择了适合初学者使用的JCreator开发工具。

Java带计算过程的计算器课程设计报告

保存计算过程的计算器 Java程序设计课程设计报告保存计算过程的计算器 目录 1 概述.............................................. 错误!未定义书签。 1.1 课程设计目的............................... 错误!未定义书签。 1.2 课程设计内容............................... 错误!未定义书签。 2 系统需求分析.......................................... 错误!未定义书签。 2.1 系统目标................................... 错误!未定义书签。 2.2 主体功能................................... 错误!未定义书签。 2.3 开发环境................................... 错误!未定义书签。 3 系统概要设计.......................................... 错误!未定义书签。 3.1 系统的功能模块划分......................... 错误!未定义书签。 3.2 系统流程图................................. 错误!未定义书签。4系统详细设计........................................... 错误!未定义书签。 5 测试.................................................. 错误!未定义书签。 5.1 测试方案................................... 错误!未定义书签。 5.2 测试结果................................... 错误!未定义书签。 6 小结.................................................. 错误!未定义书签。参考文献................................................ 错误!未定义书签。附录................................................ 错误!未定义书签。 附录1 源程序清单...................................... 错误!未定义书签。

简单IE浏览器设计报告

C#程序设计 设计说明书简易IE浏览器的设计与实现 学生姓名:郭成成 学号:1103380106 班级:计算机(一)班 专业:计算机应用技术

指导教师:胡老师 课程设计任务书 2011—2012 学年第二学期 课程设计名称:C#课程设计 设计题目:简易IE浏览器的设计与实现 完成期限:自 2012 年 11 月 8 日至 2011 年 11 月 29 日共 3 周 设计依据、要求及主要内容: 根据程序设计所学知识,设计与实现一个简单浏览器,该简单浏览器设计的内容和功能要求如下: (1)有合理的首页页面设计,背景柔和。 (2)有多个按钮,比如说前进、后退、刷新删除等。 (3) 输入地址栏,支持所有的网址,并有转到功能。 (4)设计登陆页面。 (5) 可以存储网址,进行网内连接。 (6)是利用 C#编写程序,该浏览器简单但功能齐全。

(7) 使用时同样可以最大化最小化。 (8)按钮是利用画图工具进行拷贝下来的。 (9) 地址默认为百度。 要求:系统功能设计基本完善,并写出详细的设计说明书。 摘要 关键词:关键词:前进、后退、刷新、输入合法地址、运行程序,在网内搜索,使用vs2005 中的 C#编写程序,利用画图工具。拷贝前进、后退按钮。 1 课题描述 利用C#编写简单的程序,创建一个简易IE浏览器,包含基本的功能,培养编写程序 的兴趣。实践中了解浏览器的一些特性 2 程序设计流程图 2.1 系统说明 使用 win7 系统,vs2005 中的控制台应用程序,设计主界面,并拖放按钮。具有一 般浏览器的基本功能,前进、后退、刷新、地址等。在输入地址栏。设默认地址为百度,便于使用,刷新功能,在网速不是太好,有一点卡时,刷新一下,主界面可以最 大化和最小化。使用绿色为边框颜色,用画图工具拷贝文件按钮,设有六个小按钮,包括前进、后退、删除、刷新、转到等按钮。 2.1 主界面的设计主界面用纯白色背景,界面以中等大小为宜。使用绿色为边框颜色,用画图工具拷贝文件按钮,设有六个小按钮,包括前进、后退、删除、刷新、转到等按钮。主界面用纯白色背景,界面以中等大小为宜。

(完整word版)Java课程设计的图片浏览器的讲解

一.课程设计的任务及要求 二.需求分析 图形化界面(GUI)编程,编写一个图片浏览器程序可以支持““.GIF”,“.JPEG”,“.jpeg”,“.TGA”,“.JPG”,“.jpg”等格式,单张打开图片,可以将同一目录下的图片按缩略图打开按“上一张”“下一张”按钮可以显示相应图片。运行Applet时,图像不是一气呵成的,因为方法不是吧图像完整的装入内存再显示的。于此相反,方法创建一个线程,该线程与Applet的原有线程并发执行,一边装入一边显示,从而产生上了不联需显示的现象。为了提高图像才显示效果,可以采用双缓冲技术:首先把图像装入内存,然后再显示在屏幕上。 三. 设计思路 3.1界面设计 选择图片按钮:主要用dir函数实现图片的遍历。 上一张,下一张:通过做标轴回调函数实现。 由于本软件为单机软件,不需要大量的数据读写和数据交换,实现上、下功能要求只能读取PictureBox控件当前加载的目录,读取当前路径,创建一维数组。 frame = new Frame("PictureViewer"); Panel pb = new Panel(); Button select = new Button("选择图片"); previous = new Button("上一张"); next = new Button("下一张"); select.addActionListener(this); previous.addActionListener(this); 3.2.图像加载: Applet常用来显示储存在文件中的图像,多数Applet使用的是GIF或JPEG 格式的图像文件。需Applet加载图像只需首先定义Image对象,然后使用getImage()方法把图像和文件结合起来即可。 image_width = bi.getWidth(this); image_height = bi.getHeight(this); double image_proportion = 1.0 * image_height / image_width; System.out.println("image: w "+image_width+" ,h "+image_height+" ,p1 "+image_proportion);

黄礼斌基于java网页浏览器的应用实现

计算机专业实习报告 实习题目: 基于Java的网页浏览器设计与开发 姓名:黄礼斌 专业:计算机科学与技术 班级:083211 学号:08321113 指导老师:吴建东 2011年11月28日

[实习时间] 2011年11月21日到11月27日 [实习地点] 软件楼601 [实习目的] 通过理论联系实际,巩固所学的知识,提高处理实际问题的能力,为顺利毕业进行做好充分的准备,并为自己能顺利与社会环境接轨做准备。 [实习内容] 基于Java的网页浏览器设计与开发 1、程序开发的基础 (3) 1.1Java技术 (3) 1.1.1Java概述 (3) 1.1.2java平台简介 (3) 1.1.3JDIC项目简介 (4) 1.2实现目标 (4) 1.3开发环境 (5) 2、系统的总体分析与设计 (6) 2.1需求分析 (6) 2.2系统结构与设计分析 (6) 2.2.1响应模式 (6) 2.2.2结构分析 (6) 2.3功能结构图 (7) 3、系统功能与实现 (8) 3.1核心技术 (8) 3.1.1JDIC项目实现浏览器组件 (8) 3.1.2收藏夹的保存与装载 (8) 3.1.3阻止IE打开弹出窗口 (9) 3.2菜单栏的实现 (9) 3.2.1文件菜单 (9) 3.2.2转到菜单 (9) 3.2.3调整菜单 (10) 3.3工具栏的实现 (10) 3.4地址栏的实现 (11) 3.5浏览器选项卡的实现 (12) 3.5.1继承扩展浏览器组件 (12) 3.5.2编写浏览器面板 (13)

3.5.3编写浏览器选项卡面板 (13) 3.5.4编写浏览器组件监听器 (13) 3.6收藏夹的实现 (13) 3.6.1添加到收藏夹 (13) 3.6.2整理收藏夹 (14) 4、测试 (15) 4.1测试与调试的基本概念 (15) 4.2测试时间 (15) 4.3软件测试的内容 (16) 5、实习体会 (17) 1、程序开发的基础 1.1Java技术 1.1.1Java概述 Java是一个广泛使用的编程语言,它基于Java虚拟机技术,从而实现跨平台。它简单,面向对象,不依赖与机器的结构,具有可移植性,安全性,并且提供了并发的机制,具有很高的性能。其次,它最大限度的利用了网络,Java的小应用程序(applet)可在网络上传输而不受CPU和环境的限制,另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。Java平台是一种纯软件平台,它有三个版本Java SE、JavaEE、Java ME。 JavaSE允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。Java SE还包含了支持Java Web服务开发的类,并为Java EE 这个版本提供基础。JavaEE下有很多流行的开发框架,像Struts、Spring、Hibernate这种流行的所谓SSH组合等。JavaME应用领域像各种移动设备和嵌入式设备,比如:手机、PDA、电视机顶盒和打印机。 1.1.2java平台简介 Java平台版本 Java平台版本主要有:J2EE(企业版本)、J2SE(标准版本)、J2ME(迷你版本)。这三个版本有不同的用途,J2EE主要用于分布式的网络程序的开发,如电子商务网站和ERP系统;J2SE主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程。 Java平台的组成

基于java的浏览器的设计与实现

基于java的浏览器的设计与实现——GUI界面子系统 摘要 21世纪人们对互联网的依赖越来越大,而网页浏览器作为上网浏览信息所必需的软件之一,已经得到了广泛地应用。在IE占据了大部分浏览器市场的情况下,国内外开发商依然没有放弃这个巨大的市场,各式各样的浏览器被开发出来抢占市场。网页浏览器的开发与应用已成为了计算机领域近年来的一大热点。 本文用软件工程的开发过程,详细论述了浏览器的分析、设计及代码实现,最终实现一个具有能同时浏览多个网页,可查看收藏夹,可以实现打开网页,超链接监听并响应,前进和后退等基本功能的浏览器。本文以一个实际运作的浏览器Browser为主轴介绍浏览器的设计理念与方法,同时讲述浏览器中各个模块如何互相协同运作,来完成一个呈现网页的工作。通过下载JDIC类库,实现了浏览器选项卡,从而达成了一个窗口显示多个网页的目的。收藏夹的实现是将收藏夹集合序列化到数据文件中,这样收藏夹被持久化解决了收藏夹的问题。另外,Java Swing技术也是本文介绍的浏览器所使用的一种主要的技术,通过使用各个组件,并增加监听器和事件处理等操作,最终形成一个具有一定事物处理能力的浏览器的界面部分。 关键词:浏览器,JDIC类库,Java Swing,事件

Based on the design and implementation of a Java browser Abstract In the 21st century, people rely on the Internet is more and more big, the web browser as one of the necessary software, surfing the Internet information has been widely used. In the case of occupying most of the IE browser market, developers still didn't give up the huge market at home and abroad, developed a variety of browser is preempted market. The development and application of web browser has become a focus in the computer field in recent years. In the development process of software engineering, this paper detailed discusses the analysis, design and code implementation of the browser, and ultimately achieve a have to browse multiple web pages at the same time, to view the favorites, can realize open a webpage, hyperlinks to monitor and respond to, the basic function such as forward and backward in the browser. Based on an actual operation of the Browser Browser Browser design concept and method of introduction for main shaft, various modules tells the Browser how to work together with each other at the same time, to finish the work of a rendered page. By downloading the JDIC class library, the realization of the browser TAB, which reached the purpose of a window to display multiple web pages. The realization of the favorites are favorites collection serialized into a data file, this collection double coverlet persistent solved the problem of the favorites. In addition, the Java Swing technology is also introduced in this paper by the browser using a kind of main technology, through the use of the individual components, and adding listeners and event handling operations such as, eventually forming a certain things browser interface part of processing capacity. Keywords:The browser,The JDIC class library,Java Swing,The event

Java计算器课程设计

Java课程设计题目:Java计算器 学生姓名杨云鹏 学号20121325054 学院信息与控制学院 专业系统工程 二O一四年 6 月 3 日

课程设计报告书目录 一、课程设计任务及要求 (5) 二、设计目的 (5) 三、操作环境 (5) 四、设计场所(机房号、机器号或自己机器) (5) 五、设计过程(设计内容及主要程序模块) (6) 六、本次设计中用到的课程知识点(列出主要知识16 七、设计过程中遇到的问题及解决办法 (16) 八、程序清单 (18)

Java背景介绍: JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(Sun Microsystems)公司的詹姆斯·高斯林(James Gosling)等人于1990年代初开发。它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,在1995年5月23日以“Java”的名称正式发布了。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。 一、课程设计任务及要求 1、课题要求 (1)使用图形用户界面:一个文本框;0-9数字按钮;加、减、乘、除运算符;“等于”符号. (2)完成整数、实数的四则运算(加、减、乘、除); (3)通过按钮点击实现数据运算。 (4)实数运算中小数位的精度一致。 2、课题设计思想 对于此计算器程序,首先要设计其界面,总体界面有一个文本框,十多个按钮,总体界面用BorderLayout布局。 文本框放置在最NORTH,然后0到9以及+,-,*,/的按钮放置到一个面板Panel中,添加到整体布局的CENTER,界面设计完成。 布局设计好后再添加按钮事件。对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。

图片浏览器设计与实现

洛阳理工学院 手机软件开发实训报告 专业计算机应用技术 班级Z120551 学号Z12055139 姓完成日期2014-1-6

一、简介 本款图片浏览器软件基于Android系统平台研发的,设计有透明度、缩放、旋转和选择图片等功能,其中设计涉及8个button按钮,可以实现图片的查看和基本的操作功能,框架结构ImageView有两个子类ImageButton 和QuickContactBadge, ImageButton还有一个子类是ZoomButton。 二、程序模块划分 1.XML文件属性 调整边界, 保持长宽比 :android:adjustViewBounds, setAdjustViewBounds(boo lean), 是否调整自己的边界, 用来保持图片的长宽比例, 该属性与android:maxHe ight 和android:maxWidth 属性一起使用才有效果, 单独使用没有效果; 设置最 大宽, 高 :android:maxWidth(android:maxHeight),setMaxWidth(int)[setMaxHeight(in t)], 该属性需要与android:adjustViewBounds属性一起使用,单独使用无效果; 设置图片固定大小, 同时保持长宽比 : a. 设置android:adjustViewBounds 为true; b. 设置最大宽度, 高度; c. 设置android:layout_width 与android:layout_hei ght 值为warp_content; 裁剪保留空白 :android:cropToPadding, setCropToPadding (boolean), 是否裁剪, 用来保留ImageView的padding, 该属性与android:scrollY 属性一起使用的时候才有用, 单独使用没有效果; 即在滚动的时候, 滚动到边界,边界的padding空白是否显示; 填充方式 :android:scaleType, setScaleType(ImageView.ScaleType), 设置图片 缩放类型以适配ImageView大小, 即填充方式; 可能的取值 : matrix, fitXY, fitStart, fitCenter, fitEnd, center, centerCrop, cen terInside; matrix : 方法中的常量值为ImageView.ScaleType.MATRIX, 使用矩阵来进行绘图; fitXY : 方法中的常量值为ImageView.ScaleType.FIT_XY, 在x y 两个方向上缩放, 使图片完全填充整个ImageView 不按照长宽比例缩放; fitStart : 方法中的常量值为ImageView.ScaleType.FIT_START, 保持长宽比缩放, 直到该图片完全显示在ImageView中, 缩放完成之后该图片在左上角; fitCenter : 方法中的常量值为ImageView.ScaleType.FIT_CENTER, 保持长宽比缩放, 直到该图片完全显示在ImageView中, 缩放完成之后该图片位于中央; fitEnd : 方法中的常量值为ImageView.ScaleType.FIT_END, 保持长宽比缩放, 直到该图片完全显示在ImageView中, 缩放完成之后该图片位于右下角; center : 方法中的常量值为ImageView.ScaleType.CENTER, 将图片放在ImageView的中央, 不进行缩放; centerCrop : 方法中的常量值为ImageView.ScaleType.CENTER_CROP, 保持长宽比缩放, 使图片完全覆盖ImageView; centerInside : 方法中的常量值为ImageView.ScaleType.CENTER_INSIDE, 保持长宽比缩放, 是的ImageView完全显示图片; (1)程序运行的AndroidManifest描述:【AndroidManifest.xml】

Java课程设计说明书要点

1 需求分析 随着21世纪信息化的到来,计算机的应用日益广泛,计算机在代替体力、脑力劳动方面发挥着不可或缺的作用,在工业方面及日常工作中也越来越离不开它。在企业里,要处理大量的数据信息,为了提高员工管理的工作效率,降低操作出错的概率,因而开发出一套员工信息管理系统是很有必要的。员工信息管理系统,可实现了公司员工信息管理系统的电子化,减轻管理人员的工作负担,能够规范、高效地管理大量的劳动人事信息,减小管理成本,提高工作效率,避免人为操作错误和不规范行为。 该软件实现了员工对个人工资的查询以及管理人员对员工信息进行动态管理的功能,例如基本信息的查询,修改,添加,删除;员工工资的查询,修改,添加,删除等。 2 具体功能 (1)新员工注册功能。 (2)员工登陆功能。 (3)员工查看个人工资功能。 (4)管理人员登录功能。 (5)管理人员对员工基本资料的修改,添加,删除,查询功能。 (6)管理人员对员工工资信息的修改,添加,删除,查询功能。 3 系统设计 3.1、功能示意图

系统功能如图3-1所示: 图3-1系统功能图 3.2、数据库设计 本软件数据库类型为MYSQL ,数据库“employee.mdb ”,其中共包含三种表,其一是 登录用户信息表 user (如表3-1),其二是员工基本信息表emps (如表3-2),其三是员工工资信息表salary (如表3-3)。对应的数据库截图分别为:登录用户信息表users 截图(如图3-2),员工基本信息表emps 截图(如图3-3),员工工资信息表salary 截图(如图3-4)。 员工 管理员 个人工资显示 showSalaryFrm.java 登陆界面 loginFrm.java 主界面mainFrm.java 员 工 基 本 信 息 的 删 除 工 资 信 息 的 查 询 工 资 信 息 的 修 改 工 资 信 息 的 删 除 工 资 信 息 的 添 加 员 工 基 本 信 息 的 添 加 员 工 基 本 信 息 的 查 询 员 工 基 本 信 息 的 修 改 版 本 信 息

基于安卓的图片浏览器的设计与实现

编号: 审定成绩: 重庆邮电大学 毕业设计(论文) 设计(论文)题目:基于安卓的图片浏览器的设计与实现 学院名称:软件学院 学生姓名:邓青佩 专业:软件工程 班级: 学号: 指导教师: 答辩组负责人: 填表时间:2012年5月

摘要 Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux 平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 4.0 Ice Cream Sandwich。 Android早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。Android 作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户正在使用各种基于Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。 2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。Android的主要竞争对手是苹果公司的iOS以及RIM 的Blackberry OS[2]。 【关键词】Android Linux平台开源手机操作系统移动软件Google

Java课程设计--个人通讯录管理系统

《JAVA程序设计》课程设计说明书

目录 1 引言 (1) 1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 3.3数据库设计 (5) 4 详细设计与实现 (7) 4.1 登录模块 (7) 4.2 注册新用户模块 (8) 4.3 查询模块 (9) 4.4 添加模块 (11) 4.5 修改模块 (13) 4.6删除模块 (16) 4.7备份模块 (18) 4.8退出模块 (19) 5 小结和展望 (20) 参考文献 (22) 附录 (22) 使用说明书 (22)

1引言 1.1课程设计选题 《个人通讯录管理系统》 1.2课程设计的目的 通过编写并调试一个Java应用软件,熟悉和掌握使用Java开发应用程序的完整过程。 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 一直以来就想做一个比较实用的通讯录管理系统,这样可以方便我对于身边联系人信息的管理,防止遗忘和丢失。 在这样一个信息化的社会里,人们的生活也越来越离不开电脑了,本次通过做个人通讯录管理系统,希望摈弃传统的纸质记录的弊端,发挥电脑软件的优势,方便人们对自己的联系人信息的管理。 2需求分析 2.1 功能需求 2.1.1个人通讯录功能需求 (1)登陆功能。用户可以直接输入用户名和密码,登陆进入通讯录的主功能界面。 (2)注册功能。其他用户可以输入自己的用户名和密码及确认密码,来实现注册成为该通讯录的使用者。 (3)查询功能。在该功能里,用户可以采用模糊查询和精确查询两种查询方式来对自己存储的联系人信息进行查询。 (4)添加功能。在该功能里,用户可以添加自己的常用联系人和分组信息。

java计算器设计报告

摘要 本计算器是由java语言所编程设计的标准计算器,可以进行十进制下的四则运算(加、减、乘、除)、开平方、求余、求倒数,还可以实现二进制与十进制之间的转换。通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。 关键词: java语言,计算器,算法

目录 摘要 (1) 1概述 (3) 1.1设计目的及思路 (3) 1.2功能模块设计 (3) 1.3系统功能图 (3) 2计算器的设计与实现 (4) 2.1程序界面 (4) 2.2程序源代码 (4) 3计算器演示 (10) 4运行调试及讨论分析 (13) 5小结 (14) 参考文献: (14)

1概述 1.1设计目的及思路 通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现! 1.2功能模块设计 以下为标准计算器的基本功能: (1)加法 两个数据进行加操作,可以为小数。 (2)减法 两个数据进行减操作,可以为负数相减。 (3)乘法 两个数相乘操作。 (4)除法 两个数相除操作。 (5)开平方 对任意一个数进行开方运算,可以是小数。 (6)求余 对任意一个数进行求余运算。 (7)倒数 对任意一个数进行倒数运算。 (8)转换 将十进制数转换为二进制以及将二进制转换为十进制。 1.3系统功能图

相关主题