第 6 章 java applet

Post on 19-Mar-2016

145 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

第 6 章 Java Applet. 5.1 什么是 Applet 5.2 Applet 方法介绍 5.3 Applet 的 AWT 绘制 5.4 Applet 的参数传递 5.5 Applet 的多媒体支持 5.6 Java 存档文件. 1. Applet 概念. Java Applet 也称为 小应用程序 ,它是网页内容的一个组成部分 在 HTML 中通过以下标记来标识一个 Applet. - PowerPoint PPT Presentation

TRANSCRIPT

第 6 章  Java Applet

5.1 什么是 Applet5.2 Applet 方法介绍 5.3 Applet 的 AWT 绘制5.4 Applet 的参数传递5.5 Applet 的多媒体支持5.6 Java 存档文件

1. Applet 概念 • Java Applet 也称为小应用程序,它是网页内容的一个组成部分• 在 HTML 中通过以下标记来标识一个 Applet.

<applet code="myapplet.class" height=200 width=300> </applet>

• 其中, code 、 height 、 width 是 3 个必须的属性,code 指定 Applet 的字节码文件名; height 和width 决定 Applet 在页面中的大小,分别规定高度和宽度。

可选属性• 除了以上 3 个基本属性外, Applet 中还提供一些可选属性: • alt 为小应用程序的说明信息,当浏览器不支持

Java 时将在 Applet 所处位置显示该信息。 •  Align 属性用来控制 Applet 在页面中的相对对齐方式。 Align 值为 left 表示左对齐, right 表示右对齐, middle 表示居中对齐。 •  HSPACE 和 VSPACE 属性分别用来设定 Applet与周围文本之间的水平和垂直间距(单位为像素)。

可选属性 ( 续)• CODEBASE 属性用于指示 Applet 类文件的 URL路径。默认情况下, Applet 类文件与 HTML 文件放在同一文件夹下。如果 Applet 是存放在另一文件夹下,则要指示与 HTML 文件的相对路径或者某个绝对 URL 路径。下例表示类文件在

HTML 文件所处路径的 java 子文件夹下。 • <applet code="myapplet.class“ codebase="java"

height=200 width=300 > • </applet>

2. 查看 Applet 执行 • 在支持 Java 的浏览器页面中运行 • 使用 J2SDK 提供的 Appletviewer 程序查看

6 . 2 Applet 方法介绍 • init( ) 方法 ---Applet 实例的初始化工作 • start( ) 方法 • paint( ) 方法 --- 调整浏览窗口大小、缩放浏览窗口、移动窗口或刷新等操作都会导致执行 paint()方法实现 Applet 重绘 • stop( ) 方法 • destroy( ) 方法 • update() 方法 • repaint() 方法

repaint()--->update(g)--->paint(g)

1. 常用图形元素的绘制方法 • drawLine(int x1, int y1, int x2, int y2) • drawRect(int x, int y, int width, int height) • drawOval(int x, int y, int width, int height)  • drawArc(int x, int y, int width, int height, int

startAngle, int arcAngle) • drawPolygon(int[] xPoints, int[] yPoints, int

nPoints) • drawRoundRect(int x, int y, int width, int height,

int arcWidth, int arcHeight) 

1. 常用图形元素的绘制方法(续)• fillOval(int x, int y, int width, int height) • fillRect(int x, int y, int width, int height)  • fillRoundRect(int x, int y, int width, int height, int

arcWidth, int arcHeight) • fillArc(int x, int y, int width, int height, int

startAngle, int arcAngle) 

1 .创建 Font 类的对象 • Font myFont = new Font(" 宋体 ", Font.BOLD,

12);     定义字体为宋体,大小为 12 号,粗体。• Font.PLAIN , Font.ITALIC , Font.BOLD 分别表示普通、斜体和粗体,如果要同时兼有几种风格可以通过 "+" 号连接。例如: new Font("TimesRoman", Font.BOLD+

Font.ITALIC, 28); 

2 .给图形对象或 GUI 部件设置字体 • 利用 Graphics 类的 setFont() 方法确定使用定义的字体 g.setFont(myFont); • 给某个 GUI 部件设定字体可以使用该部件的

setFont() 方法。例如: Button btn=new Button(" 确定 "); btn.setFont(myFont);

• 使用 getFont() 方法返回当前的 Graphics 对象或GUI 部件使用的字体。

用 FontMetrics 类获得字体的更多信息 用 getFontMetrics(Font) 方法得到一个

FontMetrics 对象引用。 • int stringWidth(String str)    返回给定字符串所占宽度• int getHeight()     获得字体的高度• int charWidth(char ch)    返回给定字符的宽度

例 6-3 在 Applet 的中央显示 " 欢迎您! "

import java.awt.*;public class FontDemo extends java.applet.Applet{  public void paint(Graphics g){     String str=" 欢迎您! ";     Font f=new Font(" 黑体 " , Font.PLAIN , 24);     g.setFont(f);     FontMetrics fm = getFontMetrics(f);     int x =(getWidth() - fm.stringWidth(str))/2;     int y = getHeight() / 2;     g.drawString(str,x,y);  }} 返回部件的高度

Color 类构造方法 • public Color(int Red, int Green, int Blue) 每个参数的取值范围在 0 ~ 255 之间 • public Color(float Red, float Green, float Blue) 每个参数的取值范围在 0.0 ~ 1.0 之间 • public Color(int RGB) 类似 HTML 网页中用数值设置颜色。

2.  颜色常量 颜色常量 RGB

black 0,0,0 blue 0,0,255cyan 0,255,255

darkGray 64,64,64gray 128,128,128green 0,255,0

lightGray 192,192,192magenta 255,0,255orange 255,200,0pink 255,175,175red 255,0,0

white 255,255,255 yellow 255,255,0

3. 常用方法 • setColor(Color.blue); // 将画笔定为兰色 • getColor( )-- 获取当前的绘图颜色。 Component 类中定义方法• setBackground() 方法 ---- 设置组件的背景色• setForeground() 方法 ---- 设置组件的前景色• getBackground( )• getForeground()思考:• 设置一个红色按钮,上面写黄色字如何实现?

6.4.1 在 HTML 文件中给 Applet 提供参数 • <applet code="My_param.class" height=200

width=300>    <param name="vs" value=" 可变大小的字符串 ">   <param name="size" value=24>   </applet>

• 在 Applet 利用 getParamter(" 参数名 ") 方法获取 HTML 传递的参数值。

例 6-5 Applet 参数的使用 import java.applet.Applet;

import java.awt.Graphics;  public class My_param extends Applet { private String s = "" ; private int size;

public void init() { s = getParameter("vs");   size = Integer.parseInt(getParameter("size")); }  

public void paint(Graphics g) {       g.setFont(new Font(" 宋体 ",Font.PLAIN,size)); g.drawString(s,30, 40); } }

例 6-6 利用 Applet 参数传递绘制图形信息 • 将各种图形命令存储在字符串中,每条命令之间用符号“ /” 分隔,一条命令以一个识别符开头,后跟若干参数,命令和参数之间用“,”分隔。例如:以下为程序中的两条命令: rect,x,y,w,h // 绘制矩形,其中, rect 为命令识别符 oval,x,y,w,h // 绘制椭圆,其中, oval 为命令识别符

HTM 文件• <html> • <body> • <applet code="ParaDraw.class"

width=200 height=200> • <param name="graph"

value="rect,10,20,100,110/oval,40,60,50,50/rect,20,30,110,120">

• </applet> • </body> • </html>

例 6-6 利用 Applet 参数传递绘制图形信息 import java.applet.Applet; import java.awt.Graphics; public class ParaDraw extends Applet { String graph; public void init() { graph=getParameter("graph"); }   public void paint(Graphics g) { String para[]; int x,y,w,h;

String commands[]=graph . split("/") ;

for (int k=0;k<commands.length ;k++ ) { para=commands[k].split(",") ;

if (para[0].equals("oval")) { x=Integer.parseInt(para[1]);

y=Integer.parseInt(para[2]); w=Integer.parseInt(para[3]); h=Integer.parseInt(para[4]); g.drawOval(x,y,w,h); }

例 6-6 利用 Applet 参数传递绘制图形信息(续1 )

else if (para[0].equals("rect")) { x=Integer.parseInt(para[1]);

y=Integer.parseInt(para[2]); w=Integer.parseInt(para[3]); h=Integer.parseInt(para[4]); g.drawRect(x,y,w,h); }

} } }

例 6-6 利用 Applet 参数传递绘制图形信息 (续2 )

1. 图像的获取 • public Image getImage(URL, String) 利用如下两个方法得到绝对地址: (1) getCodeBase() : Applet 字节码文件的 URL地址。 (2) getDocumentBase() : html 文件的 URL地址。

2. 图像绘制 • public void drawImage(Image, x, y, imageObserver)

监视图象下载,获取图像的构建信息

例 6-7 绘制一个图像 import java.awt.*;import java.applet.Applet;public class DrawMyImage extends Applet {

Image myImage; public void init() { myImage = getImage(getDocumentBase(), "model2.GIF"); }

public void paint(Graphics g) { g.drawImage(myImage, 0, 0, this); }

 }

3.   利用双缓冲区绘图 ( 例 6-8 移动的笑脸 )

import java.awt.*; import java.applet.*;public class mthread extends Applet {  Image img;

public void init() {     img = createImage(300,300);     Graphics gimg = img.getGraphics();     gimg.drawOval(60,60,100,100);     gimg.fillOval (75,90,25,10);     gimg.fillOval(120,90,25,10);     gimg.drawLine(110,95,110,130);     gimg.drawArc(85,110,50,40,0,-180);     gimg.drawLine(110,130,100,120);  }

例 6-8 移动的笑脸 ( 续)public void paint(Graphics g) {

     for(int i = 0; i<700; i +=5) {        for(int j = 0 ; j<9900000; j++) ;//起延时作用 g.drawImage(img, i , 100, this);           repaint();        }    } }

}

例 6-9   通过图片的更换显示形成动画 import java.applet.*;

import java.awt.*; public class ShowAnimator extends Applet{ Image[] m_Images; int totalImages = 18; int currentImage = 0;

public void init(){ m_Images = new Image[totalImages]; for(int i=0; i<totalImages; i++) m_Images[i] = getImage(getDocumentBase(), "images\\img00" +(i+1)+".gif"); }

例 6-9   通过图片的更换显示形成动画 ( 续) public void start() {

  currentImage = 0; }

public void paint(Graphics g) { g.drawImage( m_Images[currentImage] ,10,10,this); currentImage = ++currentImage % totalImages;

try{ Thread.sleep(2000); }

catch(InterruptedException e) { } repaint(); }  }

休息 !!与循环延时的差异?

开始第一张片

什么作用

1 .利用 Applet 类的 play ()方法直接播放• play(URL,String)• play(URL) 方法 1 是将 URL 路径与声音文件名分开 方法 2 将文件名包含在 URL 中。例如: play(getDocumentBase(),"passport.mid");

2. 使用 AudioClip 接口 AudioClip 接口定义了声音文件的常用处理方法:• public void play()   开始播放一个声音文件,本方法每次调用,都从头开始重新播放。• public void loop()   循环播放当前声音文件• public void stop()   停止播放当前声音文件 可以使用 Applet 类的 getAudioClip() 方法或 new AudioClip() 方法获取 AudioClip 类型的对象。

例 6-10 在 Applet 中播放声音 import java.applet.*;public class sounda extends Applet {

  AudioClip ac;  public void init() {     ac = getAudioClip ( getCodeBase(), "sloop.au");  }  public void start() {  ac.loop();  }  public void stop() {  ac.stop();  }}

作业1 )根据 Applet 大小绘制若干同心圆,相邻圆之间的间距为 10 个象素。 提示:通过 getWidth() 和 getHeight() 方法可获得

applet 的宽度和高度。2 )通过 Applet 参数提供两个间距在 100 以内的整数,找出这两个整数之间的所有素数,按每行 5个在 Applet 画面上输出。3) 在 Applet 画面中绘制一个 19×19 的围棋棋盘。棋盘的颜色由白( white )、灰 (gray) 、橘黄

(orange) 、浅红 (pink) 几种颜色中随机选取。

top related