前言
随着数码摄影时代的到来,不论是专业摄影师及专业摄影师及案例图片档案或是向他人展示自己的摄影作用,还是家庭生活摄影,都需要相册来报关摄影作品。如同传统的照相博,电子相册具有展示功能也有储存和管理功能。随着人们生活水平的逐步提高,旅游照相成了大家必不可少的放松项目。虽然照片最后存入到自己的电脑里,但是时间一长,照片一多,这些有着构成回忆的 “资料”,就会显得杂乱无章,既不方便欣赏,也不便管理。而电子相册具有以欣赏“传播方便”界面美观的特点,可以很好的管理所存照片,不是为欣赏照片的最佳工具。电子相册系统平台因此而应运而生。
随着数码相机,手机照相等功能的普及,每个人手上都储存了大量的电子相片,但这些照片如果不进行处理,仅仅以一张张图片的形式放置在电脑上,不仅不易观赏,也不方便分类处理,电子相册系统平台能将这些照片整理成一本本的相册。
电子相册是时下最流行的一种网络元素,他在很多领域有着很广泛的应用。例如,现在最流行的空间及博客大量的应用该技术,受到大多数网友的认可及追捧,均添加了一静态照片为素材,配合动感的背景,前景和字幕等视屏处理的特殊效果,配上音乐制成电子相册。制作好的电子相册可以在电脑上,各类影读机上,及手机和mp4里都能观看,这是电子相册技术发展到今天的新突破,即不再像传统那样,只能在电脑上或影读机上观看了,并可还可以通过手机将自己的个性mtv发送给远方的亲朋好友观赏。当然,如果考虑长期保存的话,制成电子相册光盘是最好的选择,金蝶可保存100多年之久,标准VCD,SVCD,DVD格式,兼容性好,通过影读机既可以与家人,朋友分享。也可以保存在硬盘上,也便于随时调赏,观赏,永久保存。
目录
第一部分:实训目的----------------------------------------------------------------------------------------------------------- 3
第二部分:实训要求----------------------------------------------------------------------------------------------------------- 3
第三部分:知识要点----------------------------------------------------------------------------------------------------------- 3
知识点1.: 什么是Applet?-------------------------------------------------------------------------------------------- 3
知识点2: 装入Applet------------------------------------------------------------------------------------------------- 4
知识点3: Applet的安全限制------------------------------------------------------------------------------------------ 4
知识点4: 编写一个Applet--------------------------------------------------------------------------------------------- 4
知识点5: 主要的Applet方法------------------------------------------------------------------------------------------ 5
知识点6: Applet显示--------------------------------------------------------------------------------------------------- 5
知识点7: paint()方法和图形对象------------------------------------------------------------------------------------- 5
知识点8: init()----------------------------------------------------------------------------------------------------------- 6
知识点9: start()---------------------------------------------------------------------------------------------------------- 6
知识点10:stop()---------------------------------------------------------------------------------------------------------- 6
知识点11: 绘图---------------------------------------------------------------------------------------------------------- 6
知识点12: Paint(Graphics g)方法------------------------------------------------------------------------------------- 7
知识点13: repaint()方法------------------------------------------------------------------------------------------------ 7
知识点14: update(Graphics g)方法------------------------------------------------------------------------------------ 7
知识点15: 方法的交互------------------------------------------------------------------------------------------------- 7
知识点16: Applet的显示策略----------------------------------------------------------------------------------------- 7
知识点17: 什么是appletviewer?------------------------------------------------------------------------------------- 7
知识点18: 用appletviewer启动Applet------------------------------------------------------------------------------- 8
知识点19: 描述--------------------------------------------------------------------------------------------------------- 8
知识点20: 其他的Applet工具---------------------------------------------------------------------------------------- 9
第四部分:电子相册制作------------------------------------------------------------------------------------------------------ 9
第五部分:实训总结---------------------------------------------------------------------------------------------------------- 12
第一部分:实训目的
在学生具备了java程序设计知识与面向对象程序技术的基础上上,应进一步提高项目实践能力,开拓创新能力。掌握使用applet程序设计的基本技术,熟练使用eclipse进行wep应用程序的编写,调试。结合案例详细说明java软件项目的整个开发过程,在项目开发过程中逐步熟悉知识点,掌握java applet结构程序的运行原理和应用技能,最后完成一个完整的项目。
第二部分:实训要求
(1)理解applet程序工作原理;
(2)理解applet的生命周期及常用方法;
(3)掌握java application和java applet的区别和转换;
(4)了解applet的安全机制;
(5)掌握分层体系结构的技巧:
(6)会用applet编写简单了小程序及完成电子相册项目。
第三部分:知识要点
知识点1.:什么是Applet?
Applet是能够嵌入到一个HTML页面中,且可通过Web浏览器下载和执行的
一种Java类。它是Java技术容器(container)的一种特定类型,其执行
方式不同于应用程序。一个应用程序是从它的main()方法被调用开始的,
而一个Applet的生命周期在一定程度上则要复杂得多。本模块分析了
Applet如何运行,如何被装载到浏览器中,以及它是如何编写的。
知识点2: 装入Applet
由于Applet在Web浏览器环境中运行,所以它并不直接由键入的一个命令启动。
你必须要创建一个HTML文件来告诉浏览器需装载什么以及如何运行它。
1. 浏览器装入URL
2. 浏览器装入HTML文档
3. 浏览器装入Applet类
4. 浏览器运行Applet
知识点3: Applet的安全限制
由于通过网络装载,Applet的代码具有一种内在的危险性。如果有人编写了
一个恶意的类来读取你的密码文件,并把它通过Internet传送,会产生怎样
的后果呢?所能够控制的安全程度是在浏览器层次上实现的。大多数浏览器
(包括Netscape Nevigator)缺省地禁止以下操作:
-- 运行时执行另一程序
-- 任何文件的输入/输出
-- 调用任何本地方法
-- 尝试打开除提供Applet的主机之外的任何系统的Socket
这些限制的关键在于,通过限制Applet对系统文件的存取来阻止它侵犯一个
远程系统的隐私或破坏该系统。禁止执行另一程序和不允许调用本地方法
限制了Applet启动未经JVM检查的代码。对Socket的限制则禁止了与另一个
可能有危害性的程序的通信。JDK1.2提供了一种方式,它指定了一个特殊的
"保护域"或一个特殊Applet运行的安全性环境。远程系统检查原始的URL以
及它下载的Applet的签名,和一个含有从特殊的Applet到特殊保护域的映射
入口的本地文件进行比较。因此,来自特别位置的特殊Applet具有一些
运行特权。
知识点4:编写一个Applet
要编写一个Applet,必须首先用以下方式创建一个类:
import java.applet.*;
public class HelloWorld extends Applet {
Applet的类必须为public,且它的名称必须与它所在的文件名匹配;在这里,
就是HelloWorld.java。而且,该类必须为java.applet.Applet的子类。
Applet类的层次
Java.applet.Applet类实际上是java.awt.Panel的子类。Applet和AWT类的
层次如下:
这种层次关系显示,一个Applet可直接用作一个AWT布局的起始点。因为
Applet为一Panel,所以它有一个缺省的流(flow)布局管理器。
Component,Container和Panel类的方法被Applet类继承了下来。
知识点5:主要的Applet方法
在一个应用程序中,程序由main()方法处进入,而在一个Applet中却不是
这样。在构造函数完成了它的任务后,浏览器调用init()对Applet进行
基本的初始化操作。init()结束后,浏览器调用另一个称为start()的方法。
本模块稍后将对start()做更细致的剖析;start()通常在Applet成为可见
时被调用。方法init()和start()都是在Applet成为"活动的"之前运行
完成的,正因为这样,它们都不能用来编写Applet中继续下去的动作。
实际上,与一个简单应用程序中的方法main()不同的是,没有什么方法的
执行是贯穿于Applet的整个生命过程中的。你在后面将看到如何使用线程
来实现这一特色。此外,你在编写Applet子类时可用的方法还有:stop(),
destroy()和paint()。
知识点6: Applet显示
Applet本质上是图形方式的,所以尽管你可以提出System.out.println()
的调用请求,通常也不能这样做,而是应该在图形环境中创建你的显示。
你可以通过创建一个paint()方法在Applet的panel上绘图。只要Applet
的显示需要刷新,paint()方法就会被浏览器环境调用。例如,当浏览器
窗口被最小化或被要求以图标方式显示时,这种调用就会发生。你应该编
写自己的paint()方法,以使它在任何时候被调用时都能正常地工作。
对它的调用是异步产生的,且由环境而不是程序来驱动。
知识点7: paint()方法和图形对象
paint()方法带有一个参数,它是java.awt.Graphics类的一个实例。这个
参数总是建立该Applet的panel的图形上下文。你能用这个上下文在你的
Applet中绘图或写入文本。下面是使用paint()方法写出文字的一例。
1.import java.awt.*;
2.import java.applet.*;
3.
4.public class HelloWorld extends Applet {
5.
6.public void paint(Graphics g){
7.g.drawString("Hello World!", 25, 25);
8.}
9.}
注-drawString方法的数字型参数为文本起始处的x和y的象素坐标。
(0,0)表示左上角。这些坐标是针对字体的基线来讲的,所以在y坐标
为0处写的结果是:文字的大部分在显示器顶部的上方,只有象字母y尾部
那样的下面部分是可见的。
7.3·Applet的方法和Applet的生命周期
Applet的生命周期比所讨论的要稍微复杂一些。与其生命周期相关的有三个
主要方法:init(),start()和stop()。
知识点8: init()
本成员函数Applet被建并装入一个能支持Java技术的浏览器
(如appletviewer)时被调用。Applet可用这个方法来初始化数据的值。
本方法只在Applet首次装入时被调用,并且在调用start()之前执行完成。
知识点9: start()
init()方法一完成,start()就开始执行。它的执行使得Applet成为"活动"的。
无论Applet何时成为可见的,它同样要执行一次,如:当浏览器在被图标化后
又恢复时,或者当浏览器在链接到另一个URL后又返回含有这个Applet的
页面时。这一方法的典型用法是启动动画和播放声音。
1.public void start() {
2.musicClip.play();
3.}
知识点10:stop()
stop()方法是在Applet成为不可见时被调用的,这种情况一般在浏览器被
图标化或链接到另一个URL时会出现。Applet用该方法使动画停止。
1.public void stop() {
2.musicClip.stop();
3.}
start()和stop()形成一对动作:典型地,start()激活Applet中的某一行为,
而stop()则可将它禁止。
知识点11:绘图
除了基本的生命周期外,Applet还有与其显示有关的一些重要的方法。这些
方法的声明和文档在AWT组件类中。使用AWT做显示处理时遵循正确的模型是
非常重要的。更新显示由一种被称为AWT线程的独立的线程来完成。这个线程
可用来处理与显示更新相关的两种情况。第一种情况是显露(exposure),
它或在首次显示时,或在部分显示已被破坏而必须刷新时出现。显示的破坏
可能发生在任何时刻,因此,你的程序必须能在任意时刻更新显示。第二种
情况是在程序重画带有新内容的画面时。这种重画可能会要求首先擦除原来
的图像。
知识点12: Paint(Graphics g)方法
显露处理自动地发生,且导致对paint()方法的一次调用。一种Graphics类
的被称为裁剪矩形的设备常用于对paint()方法进行优化。除非必要,更新
不会完全覆盖整个图形区域,而是严格限制在被破坏的范围内。
知识点13: repaint()方法
对repaint()的调用可通知系统:你想改变显示,于是系统将调用paint()。
知识点14: update(Graphics g)方法
repaint()实际上产生了一个调用另一方法update()的AWT线程。update
方法通常清除当前的显示并调用paint()。update()方法可以被修改,
如:为了减少闪烁可不清除显示而直接调用paint()。
知识点15:方法的交互
下面的框图描述了paint(),update()和repaint()方法间的内在关系。
图略
知识点16: Applet的显示策略
Applet模型要求你采取一种特定的策略来维护你的显示:
-- 维护一个显示模型。这个模型是对为再次提供显示而所需做的事情的一个
定义。关于如何去做的指令在paint()方法中被具体化;这些指令所用的数据
通常是全局成员变量。
-- 使paint()提供仅仅基于该模型的显示。这使得无论paint()何时被调用,
它都能以一致的方法再生该显示,并正确地处理显露问题。
-- 使得程序对显示的改变,通过更新该模型而调用repaint()方法来进行,
以使update()方法(最终是paint()方法)被AWT线程调用。
注-一个单一AWT线程处理所有的绘图组件和输入事件的分发。应保持
paint()和update()的简单性,以避免它们使AWT线程发生故障的可能性更大;
在极端情况下,你将需要其他线程的帮助以达到这一目的。有关线程的编程
是模块14的主题。
知识点17:什么是appletviewer?
Applet通常运行于一个Web浏览器中,如HotJava TM或Netscape Navigator,
它们有支持Java软件程序运行的能力。为了简化和加速开发过程,JDK应运而生,
它附带有一个专为查看Applet而设计但不支持HTML页面查看的工具。这个工具
就是appletviewer。appletviewer是使你不必使用Web浏览器即可运行
Applet的一个Java应用程序。它犹如一个"最小化的浏览器"。appletviewer
读取命令行中URL所指定的HTML文件。这个文件必须包含装入及执行一个或
多个Applet的指令。appletviewer忽略了所有其他的HTML代码。它不能显示
普通的HTML或嵌人在一个文本页中的Applet。
知识点18:用appletviewer启动Applet
appletviewer将一个框架样式的区域粘贴在屏幕上,然后实例化该Applet并
将这个Applet实例贴在已有的框架中。appletviewer带有一个命令行参数
形式的URL,它指向一个含有Applet引用的HTML文件。这个Applet引用是
一个指定了appletviewer要装载的代码的HTML标记。
注意,这个标记的通用格式与任何其他的HTML相同,即,用<和>两个符号来
分隔指令。上例中显示的所有部分都是必需的,你必须使用。
其中
-- archive = archiveList - 这一可选属性描述了一个或多个含有将被
"预装"的类和其他资源的archives。类的装载由带有给定codebase的
AppletClassLoader的一个实例来完成。ArchiveList中的archives以
逗号(,)分隔。
-- code = appletFile.class - 这是一个必需的属性,它给定了含有
已编译好的Applet子类的文件名。也可用package.appletFile.class的
格式来表示。
注-这个文件与你要装入的HTML文件的基URL有关,它不能含有路径名。
要改变Applet的基URL,可使用。
知识点19:描述
-- width = pixels height = pixels - 这些必需的属性给出了Applet
显示区域的初始宽度和高度(以象素为单位),不包括Applet所产生的任何
窗口或对话框。
-- codebase = codebaseURL - 这一可选属性指定了Applet的基
URL——包含有Applet代码的目录。如果这一属性未指定,则采用文档的URL。
-- alt = alternateText - 这一可选属性指定了当浏览器能读取Applet
标记但不能执行Java Applet时要显示的文本。
-- name = appletInstanceName - 这个可选属性为Applet实例指定有关
名称,从而使得在同一页面上的Applet可找到彼此(以及互相通信)。
-- align = alignment - 这个可选属性指定了Applet的对齐方式。它的
可取值与基本的HTML中IMG标记的相应属性相同,为:left,right,top,
texttop,middle,absmiddle,baseline,bottom和absbottom。
-- vspace = pixels hspace = pixels - 这些可选属性指定了在
Applet上下(vspace)及左右(hspace)的象素数目。其用法与IMG标记
的vspace和hspace属性相同。
-- - 这个标记
提供了一种可带有由"外部"指定的数值的Applet,它对一个Java应用程序
的作用与命令行参数相同。Applet用getParameter()方法来存取它们的
属性,该方法将在本模块稍后作更详细的讨论。
-- 不支持Java程序执行的浏览器将显示被包括在
标记之间的任何常规的HTML;而可支持Java技术的浏览器则忽略介于这
两个标记之间的HTML代码。
知识点20:其他的Applet工具
在Applet中有若干其他特色。
所有的Java软件程序都具有访问网络的特色,这可使用模块15中所讲到的
java.net包中的类来实现。此外,Applet还有些其他的方法可允许它们取
得有关自己启动时所在的浏览器环境的信息。类java.net.URL描述了URL,
并可用于它们之间的连接。在Applet类中有两个方法决定了URL的重要的值:
-- getDocumentBase()返回一个描述当前浏览器中带有Applet标记的HTML
文件所属页面目录的URL对象
-- getCodeBase()返回一个描述Applet类文件本身源目录的URL对象。它
通常与HTML文件目录相同,但并不是一定要这样。
其他的Applet特色
用URL对象作为一个起始点,你可以将声音和图像取回到你的Applet中。
-- getImage
第四部分:电子相册制作
(1)编写程序:
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Graphics;
import java.awt.Image;
@SuppressWarnings("serial")
public class photo extends Applet{
Image[]images;
int totalImage=5;
int currentImage=0;
public void init()
{
this.resize(400,300);
final AudioClip audioClip=getAudioClip(getCodeBase(),"202.mid");
new Thread()
{
public void run()
{
audioClip.loop();
}
}.start();
images=new Image[totalImage];
images[0]=getImage(this.getCodeBase(),"u=216185092,2540779134&fm=3&gp=0.jpg");
images[1]=getImage(this.getCodeBase(),"u=643335161,3046447833&fm=52&gp=0.jpg");
images[2]=getImage(this.getCodeBase(),"u=1521521847,1083887509&fm=52&gp=0.jpg");
images[3]=getImage(this.getCodeBase(),"u=1654547450,4268448090&fm=3&gp=0.jpg");
images[4]=getImage(this.getCodeBase(),"u=2805624461,1891788119&fm=3&gp=0.jpg");
}
public void paint(Graphics g){
g.drawImage(images[currentImage],0,0,this);
currentImage ++;
try{
Thread.sleep(1000);
currentImage = currentImage % totalImage;
}catch(InterruptedException e){
}
repaint();
}
(2)调试运行程序:
第五部分:实训总结
至此,基于javaweb技术的电子相册项目的设计与开发已顺利完成。在这几天的试运行的过程中,在连接数据库是一度出错,经过调试改正后错误点全部清除,此系统可以按着设计思路和需求功能正常运行。
通过开发电子相册项目,不但熟悉掌握了软件集成开发环境myeeclipse的使用,还学会了使用applet数据库级相关组件的使用,培养和锻炼了独立从事开发项目系统的能力,而且通过对电子相册系统的管理的操作,加深了对管理信息系统的原理,技术,方法,工具,步骤和有关理论知识的理解和认识,为今后在工作岗位上更好地利用applet技术开发网页打下了良好的基础。
实训时间,我努力学习新知识,运用新知识。从新的一方面去了解课本知识,从我们的知识螺旋上升,提高实践与理论统一认识。认识到理论与实践的差距,调高自己的动手能力。
虽然实训的时间很短,但他却是我们对只是理论的认识,深化知识与实践的关系加强时间的重要性。
第二篇:java程序设计实训报告
烟台南山学院
软件工程学院
《Java程序设计》实训报告
2010-2010学年第一学期
班 级:09软件2班
姓 名:朱杰
学 号:201041060202
专 业:软件技术
指导教师:柳
2
6