第 6 章 java applet

32
第6第 Java Applet 5.1 第第第 Applet 5.2 Applet 第第第第 5.3 Applet 第 AWT 第第 5.4 Applet 第第第 5.5 Applet 第第第 第第 5.6 Java 第第第第

Upload: cortez

Post on 19-Mar-2016

149 views

Category:

Documents


2 download

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

Page 1: 第 6 章 Java Applet

第 6 章  Java Applet

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

Page 2: 第 6 章 Java Applet

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

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

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

Page 3: 第 6 章 Java Applet

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

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

Page 4: 第 6 章 Java Applet

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

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

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

Page 5: 第 6 章 Java Applet

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

Page 6: 第 6 章 Java Applet

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

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

Page 7: 第 6 章 Java Applet

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) 

Page 8: 第 6 章 Java Applet

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) 

Page 9: 第 6 章 Java Applet

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

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

Font.ITALIC, 28); 

Page 10: 第 6 章 Java Applet

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

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

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

Page 11: 第 6 章 Java Applet

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

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

Page 12: 第 6 章 Java Applet

例 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);  }} 返回部件的高度

Page 13: 第 6 章 Java Applet

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 网页中用数值设置颜色。

Page 14: 第 6 章 Java Applet

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

Page 15: 第 6 章 Java Applet

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

Page 16: 第 6 章 Java Applet

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 传递的参数值。

Page 17: 第 6 章 Java Applet

例 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); } }

Page 18: 第 6 章 Java Applet

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

Page 19: 第 6 章 Java Applet

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>

Page 20: 第 6 章 Java Applet

例 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("/") ;

Page 21: 第 6 章 Java Applet

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 )

Page 22: 第 6 章 Java Applet

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 )

Page 23: 第 6 章 Java Applet

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

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

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

Page 24: 第 6 章 Java Applet

例 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); }

 }

Page 25: 第 6 章 Java Applet

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);  }

Page 26: 第 6 章 Java Applet

例 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();        }    } }

}

Page 27: 第 6 章 Java Applet

例 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"); }

Page 28: 第 6 章 Java Applet

例 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(); }  }

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

开始第一张片

什么作用

Page 29: 第 6 章 Java Applet

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

Page 30: 第 6 章 Java Applet

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

Page 31: 第 6 章 Java Applet

例 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();  }}

Page 32: 第 6 章 Java Applet

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

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

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