|
一、Applet:可以嵌入HTML文件的Java程序。
1.Applet的语言特点:
从Applet类扩展而创建的用户Applet新类。
类定义举例:public class hello2 extends Applet
Applet依赖于浏览器的调用。
通过〈Applet〉标记嵌入在HTML文件中。
2.HTML中Applet标记的主要属性:
Code=Applet文件标识。
Codebase=Applet文件所在路径。
width=Applet显示区域的宽度。
height=Applet显示区域的高度。
name=Applet的符号名,用于同页面不同Applet之间的通信。
3.Applet的生命周期:
init()、start()、stop()、destroy()方法都是Applet类中已经定义的方法,
系统根据上述规则自动执行Applet的生命周期。
用户Applet中也可重新定义这些方法(重载)。
例3.1 了解Applet的生命周期。
首先执行init()方法,构造了Car类的实例Car1,并计算了price1和mycar1。
然后执行start()方法,计算了price2。
然后执行paint()方法,在页面上显示Price1和price2的信息。
二、通过HTML文件向Applet传递信息
1.在HTML文件中使用〈Param〉标记:
〈Applet code=Applet文件 width=xxx height=xxx〉
〈Param name=参数名 value=参数值〉
〈Param name=参数名 value=参数值〉
............
〈/Applet〉
2.在Applet中使用getParameter(参数名)获取信息
例3.2 从HTML文件中获取信息的Applet。
设置了两个参数:MANU和MODEL。
由HTML文件提供实际信息,Applet获取参数值后进行处理。
不同的HTML页面提供不同的信息,运行同一个Applet,可获得不同的结果。
三、Applet中的信息输出:paint()方法和Graphics类
在Applet中,是通过paint()方法实现信息输出的,即在浏览器窗口中显示文字、图形、图象等各种形式的信息。
paint()方法中定义了Graphics类对象g,使用该对象的各种方法实现文字、图形、图象的输出。
1.显示字符串:drawString(字符串,x坐标值,y坐标值)
2.字体处理:
Font类:字体信息及其处理函数组成的类。
创建一个字体类对象:Font myfont=new Font(字体名,字型,字号)
字体类对象中包含的主要信息:字体名、字型、字号。
获取字体对象的字体名信息:字体对象.getName()
获取字体对象的字体族信息:字体对象.getFamily()
获取字体对象的字型信息:字体对象.getStyle()
获取字体对象的字号信息:字体对象.getSize()
获取Graphics类对象g的字体属性:Font cur_font=g.getFont()
设置图形类对象的字体:g.setFont(字体对象)
例3.3:Font信息的读取和设置
功能:显示当前使用的Font信息,并用指定的字体显示“Welcome to Our Website!”
说明:String.valueOf(n):将整形量n转换为字符串。
3.颜色处理:
Color类:颜色信息及其处理函数组成的类。
创建颜色类对象:Color mycolor=new Color(红色成分值,绿色成分值,兰色成分值)
成分值:0~255的整数。
Color类中定义了若干颜色常量,可直接引用。
获取Graphics类对象g的颜色属性:Color cur_color=g.getColor()
设置图形类对象的字体:g.setColor(颜色对象)
例3.4:Color信息的读取和设置
功能:显示彩色文字“Welcome to Our Website!”
说明:Math.random() 获得一个0~1的随机数。
Math.floor(x) 获得一个小于或等于x的整数(仍为浮点数类型)。
(int)x 将浮点数x转换为整型量。
练习3.1:控制Graphics对象的颜色和字体。
练习3.2:从页面文件获取信息。
4.图形、图象的输出
画直线:drawLine(x1,y1,x2,y2)
(x1,y1):起点坐标
(x2,y2):终点坐标
若起点坐标=终点坐标:画点
画矩形:
边框矩形:drawRect(x,y,width,height)
(x,y):矩形左上角的坐标
填充矩形:fillRect(x,y,width,height)
(x,y):矩形左上角的坐标
圆角矩形:drawRoundRect(x,y,width,height,arcWidth,arcHeight)(边框型)
fillRoundRect(x,y,width,height,arcWidth,arcHeight)(填充型)
(x,y):矩形左上角的坐标
(arcWidth,arcHeight):圆角的横向直径和纵向直径
arcWidth=arcHeight=width=height时:画圆
立体矩形:draw3DRect(x,y,width,height,raised)(边框型)
fill3DRect(x,y,width,height,raised)(填充型)
raised:布尔型,表示具有凸出/凹进的效果(raised=true/false)。
画圆:
椭圆:drawOval(x,y,width,height)(边框型)
fillOval(x,y,width,height)(填充型)
圆弧:drawArc(x,y,width,height,startAngle,arcAngle)(边框型)
fillArc(x,y,width,height,startAngle,arcAngle)(填充型)
startAngle:起始角度
arcAngle:圆弧角度
图形复制和清除:
复制:copyArea(x,y,width,height,dx,dy)
dx,dy:新区域相对原始区域的偏移
清除:clearArea(x,y,width,height)
显示图象:
Image类:保存图象信息的数据结构。
装载图象文件:Image myImage(baseURL,imageFile)
myImage:创建的Image类对象
baseURL:当前HTML文件所在目录的URL
imageFile:图象文件标识(含相对路径)
显示图象:drawImage(ImageObject,x,y,this)
例3.5:随机彩色盒
例3.6:显示图象文件
四、Applet中的交互机制:事件
1.事件的概念
事件表达了系统、Applet及用户之间的动作和响应。事件产生和处理的流程如下:
2.事件类:Event
定义了键常量,表示一个键被按下的事件。
定义了事件常量,表示该事件的发生。
定义了数据成员,存储有关事件对象的信息。
定义了若干方法,能够用来得到事件的有关信息。
3.通过handleEvent()方法实现事件的响应
handleEvent()方法是Applet类从其父类Component类继承而来的。
事件发生后,Applet将自动执行handleEvent()方法。
handleEvent()方法:根据evt.id判断什么事件发生,
转入相应的事件处理方法。
Component类中定义的各事件处理方法,没有具体操作,必须在用户的Applet中重新定义。
例3.5 响应mouseDown事件。
|
Applet的运行过程: |  |
mouseDown事件发生后,系统生成事件对象evt,并送入用户的Applet,
同时送入的有关信息:点击位置的坐标值x和y。
例3.6 响应keyPress事件。
Applet的运行过程与上例类似。
keyDown事件发生后,系统生成事件对象evt,并送入用户的Applet,
同时送入的有关信息:所按键的ASCII码。
练习3.3:同时响应鼠标和键盘事件
4.通过事件监听器(event listeners)接收和处理事件
事件监听器是一些接口,每一个针对若干事件。
接口中定义了响应事件的方法,
这些方法必须在用户的Applet中重载(即重新定义)。
使用事件监听器:
Applet源文件开始处:import java.awt.event.*
根据需要监听的事件类型选择合适的监听器,声明用户Applet:
public class UserApplet extends Applet implements eventListner
在用户Applet中重载处理事件的方法。
例如:使用ActionListener时,需重载actionPerformed方法。
例3.7 使用事件监听器。
使用事件监听器的情况下,用户点击按钮后,
系统产生ActionEvent类的对象event,并送入用户Applet,
用户Applet执行ActionPerformed()方法,对按钮事件进行处理。
五、独立实践:练习3.4
按以下要求编写KeyString.java:
(1)接收用户按下的字符键,并在(10,20)位置处连续显示。
(2)并能处理退格键(提示:退格键的ASCII码是8)。(运行效果)
|