Applet java学习 Lesson 9
2012-05-27 15:36
387 查看
Applet
Applet又称为Java小应用程序,是能够嵌入到一个HTML页面中,并且可通过Web浏览器下载和执行的一种Java类 。
Applet不需要main()方法,由Web浏览器中内嵌的Java虚拟机调用执行。
Applet的安全限制
因为applet是从远端服务器上下载并且在本地执行,所以安全性就显得格外重要。
通过限制applet在沙箱(applet的运行环境)中运行,保证了对本地系统而言applet是安全的。
applet在沙箱中运行时:
⑴不能运行任何本地可执行程序;
⑵除了存放下载的applet的服务器外,applet不能和其它主机进行通信。
⑶不能对本地文件系统进行读写。
Applet的生命周期
init():当浏览器加载applet,进行初始化的时候调用该方法。
start():在init()方法之后调用。当用户从其它页面转到包含applet的页面时,该方法也被调用。
stop():在用户离开包含applet的页面时被调用。
destroy():当applet不再被使用,或浏览器退出的时候,该方法被调用。
paint()方法
Applet本质上是图形方式的,我们应该在图形环境中绘制我们的显示内容。
我们可以通过创建一个paint()方法在Applet的panel上绘图。只要Applet的显示需要刷新,paint()方法就会被浏览器环境调用。例如,当Applet的显示尺寸发生变化的时候,或浏览器窗口被最小化或被要求以图标方式显示时,这种调用就会发生。
我们应该编写自己的paint()方法,以使它在任何时候被调用,都能正常地工作。对它的调用是异步产生的,且由Applet的运行环境而不是程序来驱动 。
paint()方法带有一个参数,它是java.awt.Graphics类的一个实例。这个参数总是建立该Applet的panel的图形上下文,我们可以用这个图形上下文在Applet中绘图或写入文本。
applet从网页中获取信息
正如应用程序可以通过命令行参数来获取信息一样,通过使用param标记,applet可以从网页中获取信息。
Applet和浏览器的通信
在浏览器中显示信息
调用AppletContext接口中的showStatus()方法
请求浏览器显示指定的网页
调用AppletContext接口中的showDocument()方法。
AWT绘图
更新显示由一种被称为AWT线程的独立的线程来完成。这个线程可用来处理与显示更新相关的两种情况。
第一种情况是显露(exposure),它在首次显示时,或在部分显示已被破坏而必须刷新时出现。显示的破坏可能发生在任何时刻,因此,我们的程序必须能在任意时刻更新显示。
第二种情况是在程序重画带有新内容的画面时。这种重画可能会要求首先擦除原来的图像。
paint(Graphics g)方法
当组件第一次显示,或受损的部分需要修复时被调用。除非必要,更新不会完全覆盖整个图形区域,而是严格限制在被破坏的范围内。
repaint()方法
对repaint()的调用可通知系统:你想改变显示,于是系统将调用paint()。
update(Graphics g)方法
repaint()实际上产生了一个调用另一方法update()的AWT线程。update方法通常清除当前的显示并调用paint()。update()方法可以被修改,例如:为了减少闪烁可不清除显示而直接调用paint()。
applet的HTML标记和属性
用于定位的applet属性
⑴width和height:必要的属性,以象素为单位,设定applet的宽度和高度。
⑵align:可选的属性,指定applet对齐的方式。
left: 把applet放在网页左边,后面的文本会移至applet的右边。
right: 把applet放在网页右边,后面的文本会移至applet的左边。
bottom: 把applet的底部与当前行文本底部对齐。
top: 把applet的顶部与当前行顶部对齐。
texttop: 把applet的顶部与当前行文本顶部对齐。
middle: 把applet的中部与当前行基线对齐。
absmiddle: 把applet的中部与当前行中部对齐。
baseline: 把applet的底部与当前行基线对齐。
absbottom: 把applet的底部与当前行底部对齐。
⑶vspace和hspace:可选的属性,指定在applet上/下的象素数目(vspace)和applet两边的象素数目(hspace)。
用于编码的applet属性
⑴code:指定applet类文件的名字。该名字要么是相对于codebase,那么是相对于当前页面。
⑵codebase:可选的属性,告诉浏览器到哪个目录下去寻找类文件。
⑶archive:可选的属性,列出Java存档文件、包含类文件的文件或者applet需要的其它资源。
⑷object:用来指定applet类文件的另外一个方法。
⑸name:可选的属性,页面脚本编写人员希望赋予applet名字属性,这样,在编写脚本的时候,就可以用为该属性指定的名字来代表这个applet。
TestApplet
AudioTest
ShowImage
DoubleBuffer
Applet又称为Java小应用程序,是能够嵌入到一个HTML页面中,并且可通过Web浏览器下载和执行的一种Java类 。
Applet不需要main()方法,由Web浏览器中内嵌的Java虚拟机调用执行。
Applet的安全限制
因为applet是从远端服务器上下载并且在本地执行,所以安全性就显得格外重要。
通过限制applet在沙箱(applet的运行环境)中运行,保证了对本地系统而言applet是安全的。
applet在沙箱中运行时:
⑴不能运行任何本地可执行程序;
⑵除了存放下载的applet的服务器外,applet不能和其它主机进行通信。
⑶不能对本地文件系统进行读写。
Applet的生命周期
init():当浏览器加载applet,进行初始化的时候调用该方法。
start():在init()方法之后调用。当用户从其它页面转到包含applet的页面时,该方法也被调用。
stop():在用户离开包含applet的页面时被调用。
destroy():当applet不再被使用,或浏览器退出的时候,该方法被调用。
paint()方法
Applet本质上是图形方式的,我们应该在图形环境中绘制我们的显示内容。
我们可以通过创建一个paint()方法在Applet的panel上绘图。只要Applet的显示需要刷新,paint()方法就会被浏览器环境调用。例如,当Applet的显示尺寸发生变化的时候,或浏览器窗口被最小化或被要求以图标方式显示时,这种调用就会发生。
我们应该编写自己的paint()方法,以使它在任何时候被调用,都能正常地工作。对它的调用是异步产生的,且由Applet的运行环境而不是程序来驱动 。
paint()方法带有一个参数,它是java.awt.Graphics类的一个实例。这个参数总是建立该Applet的panel的图形上下文,我们可以用这个图形上下文在Applet中绘图或写入文本。
applet从网页中获取信息
正如应用程序可以通过命令行参数来获取信息一样,通过使用param标记,applet可以从网页中获取信息。
Applet和浏览器的通信
在浏览器中显示信息
调用AppletContext接口中的showStatus()方法
请求浏览器显示指定的网页
调用AppletContext接口中的showDocument()方法。
AWT绘图
更新显示由一种被称为AWT线程的独立的线程来完成。这个线程可用来处理与显示更新相关的两种情况。
第一种情况是显露(exposure),它在首次显示时,或在部分显示已被破坏而必须刷新时出现。显示的破坏可能发生在任何时刻,因此,我们的程序必须能在任意时刻更新显示。
第二种情况是在程序重画带有新内容的画面时。这种重画可能会要求首先擦除原来的图像。
paint(Graphics g)方法
当组件第一次显示,或受损的部分需要修复时被调用。除非必要,更新不会完全覆盖整个图形区域,而是严格限制在被破坏的范围内。
repaint()方法
对repaint()的调用可通知系统:你想改变显示,于是系统将调用paint()。
update(Graphics g)方法
repaint()实际上产生了一个调用另一方法update()的AWT线程。update方法通常清除当前的显示并调用paint()。update()方法可以被修改,例如:为了减少闪烁可不清除显示而直接调用paint()。
applet的HTML标记和属性
用于定位的applet属性
⑴width和height:必要的属性,以象素为单位,设定applet的宽度和高度。
⑵align:可选的属性,指定applet对齐的方式。
left: 把applet放在网页左边,后面的文本会移至applet的右边。
right: 把applet放在网页右边,后面的文本会移至applet的左边。
bottom: 把applet的底部与当前行文本底部对齐。
top: 把applet的顶部与当前行顶部对齐。
texttop: 把applet的顶部与当前行文本顶部对齐。
middle: 把applet的中部与当前行基线对齐。
absmiddle: 把applet的中部与当前行中部对齐。
baseline: 把applet的底部与当前行基线对齐。
absbottom: 把applet的底部与当前行底部对齐。
⑶vspace和hspace:可选的属性,指定在applet上/下的象素数目(vspace)和applet两边的象素数目(hspace)。
用于编码的applet属性
⑴code:指定applet类文件的名字。该名字要么是相对于codebase,那么是相对于当前页面。
⑵codebase:可选的属性,告诉浏览器到哪个目录下去寻找类文件。
⑶archive:可选的属性,列出Java存档文件、包含类文件的文件或者applet需要的其它资源。
⑷object:用来指定applet类文件的另外一个方法。
⑸name:可选的属性,页面脚本编写人员希望赋予applet名字属性,这样,在编写脚本的时候,就可以用为该属性指定的名字来代表这个applet。
TestApplet
import java.applet.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.net.URL; public class TestApplet extends Applet { String strFont; int xOrigin,yOrigin; public void init() { Button btn=new Button("链接"); add(btn); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { getAppletContext().showDocument( new URL("http://localhost/postinfo.html"),"_blank"); } catch(Exception ex) { ex.printStackTrace(); } } }); strFont=getParameter("font"); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { xOrigin=e.getX(); yOrigin=e.getY(); } public void mouseReleased(MouseEvent e) { Graphics g=getGraphics(); g.setColor(Color.red); g.drawLine(xOrigin,yOrigin,e.getX(),e.getY()); } }); //System.out.println("init"); } public void start() { System.out.println("start"); } public void stop() { System.out.println("stop"); } public void destroy() { System.out.println("destroy"); } public void paint(Graphics g) { //Font f=new Font("楷体_GB2312",Font.BOLD,30); Font f=new Font(strFont,Font.BOLD,30); g.setFont(f); g.setColor(Color.blue); g.drawString("维新科学技术培训中心",0,30); } } //<applet code="TestApplet.class" width=600 height=400> //</applet>
AudioTest
import java.applet.*; import java.awt.HeadlessException; public class AudioTest extends Applet{ private AudioClip ac; public void init(){ ac=getAudioClip(getDocumentBase(), "kk.mp3"); System.out.println("haahhahaha"); } public void start(){ //play(getDocumentBase(), "123.wma"); ac.loop(); System.out.println("nsbasnh"); } public void stop(){ ac.stop(); System.out.println("utiewutiwe"); } }
ShowImage
import java.applet.Applet; import java.awt.HeadlessException; import java.awt.*; public class ShowImage extends Applet{ private Image[] imgs; private int totalImages=10; private int currentImage; private int i=0; public void init(){ imgs=new Image[totalImages]; for(int i=0;i<totalImages;i++){ imgs[i]=getImage(getDocumentBase(), "T"+(i+1+".jpg")); } //img=getImage(getDocumentBase(), "0095.jpg"); } public void start(){ currentImage=0; } public void paint(Graphics g){ System.out.println("draw:"+i++); //g.drawImage(img, 0, 0, this); g.drawImage(imgs[currentImage], 0, 0, this); currentImage=++currentImage%10; try { Thread.sleep(500); } catch (Exception ex) { ex.printStackTrace(); } repaint(); } }
DoubleBuffer
/** * @(#)DoubleBuffer.java * * * @author * @version 1.00 2012/5/17 */ import java.applet.Applet; import java.awt.HeadlessException; import java.awt.*; public class DoubleBuffer extends Applet { private Image[] imgs; private int totalImages=10; private int currentImage; private int i=0; private Image imgBuf; private Graphics gBuf; private MediaTracker mt; public void init(){ mt=new MediaTracker(this); imgBuf=createImage(600, 400); gBuf=imgBuf.getGraphics(); gBuf.setColor(Color.red); gBuf.fillRect(0, 0, 600, 400); imgs=new Image[totalImages]; for(int i=0;i<totalImages;i++){ imgs[i]=getImage(getDocumentBase(), "T"+(i+1+".jpg")); mt.addImage(imgs[i], i); } try{ mt.waitForID(0); }catch(Exception ex){ ex.printStackTrace(); } //img=getImage(getDocumentBase(), "0095.jpg"); } public void start(){ currentImage=0; gBuf.drawImage(imgs[currentImage], 0, 0, this); currentImage=1; } public void paint(Graphics g){ System.out.println("draw:"+i++); //g.drawImage(img, 0, 0, this); g.drawImage(imgBuf, 0, 0, this); if(mt.checkID(currentImage, true)){ gBuf.fillRect(0, 0, 600, 400); gBuf.drawImage(imgs[currentImage], 0, 0, this); currentImage=++currentImage%10; } try { Thread.sleep(500); } catch (Exception ex) { ex.printStackTrace(); } repaint(); } public void update(Graphics g){ paint(g); } }
相关文章推荐
- Applet java学习 Lesson 9
- Java学习lesson 12
- 图形界面编程 Java学习 Lesson 8
- 学习,java applet,ssl,工作
- 【安卓学习笔记】JAVA基础Lesson12-接口
- 【安卓学习笔记】JAVA基础Lesson8-函数的复写与super用法
- java系统学习(十八) --------Applet设计
- applet,欢迎学习java
- 【安卓学习笔记】JAVA基础Lesson3-面向对象和类
- 集合类 java学习 Lesson 6
- Java 学习笔记 (7) - GUI编程之Java小程序 Applet
- 【安卓学习笔记】JAVA基础Lesson2-JDK安装与环境配置
- java学习lesson 01
- Java学习lesson 08
- java系统学习(十八) --------Applet设计
- Java学习lesson 10
- Java学习lesson 06
- 集合类 java学习 Lesson 6
- JAVA学习笔记之三Applet程序
- Java学习笔记--Lesson1(Java跨平台原理的剖析和Java环境变量的配置