Java第八次课-Applet程序设计

java实验报告之applet(小程序) 一.实验目的与要求 1.了解java Applet基本框架结构、生命期。 2.了解Applet与HTML网页之间的应用关系。 3.了解HTML向Applet传递参数。 二、实验内容 2.1实验问题及结果 <1>实验问题:设计如下小应用程序,完成界面功能。需要完成的界面如下图所示: 图一:实验界面图 <2>实验步骤: (1)在编辑区编译java源文件,形成类文件.class... 阅读详情

Applet程序设计
本章目录
6.1 Applet基本概念
6.2 编写Applet程序
6.3 Applet多媒体设计
6.4 Applet的交互功能与通信功能

6.1 Applet基本概念
本章介绍Java语言的另一种程序,即Java小应用程序Applet。

一、什么是Applet?
Applet是Java语言与WWW相结合的产物,是一种被嵌入到Web页中,由Java兼容浏览器执行的小程序,可以生成具有动态效果和交互功能的Web页,其主要特点有:
◆ 绘图功能
◆ 动态效果
◆ 动画和声音
◆ 交互功能
◆ 窗口环境
◆ 网络交流能力

Applet是Java语言程序的一种特殊形式,从语法上看,Application的语法完全适用于Applet,包括语句、方法和图形界面设计技术等,二者之间的差异在于Applet是在浏览器环境

下运行的。Applet的应用是目前Java语言应用的重要内容,在Internet上可以浏览到数量惊人的Applet程序,其设计丰富多彩,千变万化,极大地丰富了WWW页面的内容。

二、Applet的运行环境和运行方式
Applet本身是一段Java程序,但它不能独立运行,需经过编译后成为字节码文件嵌入到HTML文本中,通过主页发布到Internet上。用户从网上访问主页打开HTML文本时,Applet被

用户浏览器执行起来。Applet自身无法以命令行方式启动,需要依赖浏览器为其提供图形界面,并且要求浏览器必须是Java兼容浏览器才行。

Java类库的java.applet包中定义了一个Applet类,Applet类被定义为面板Panel类的子类,是一个非独立的容器,必须被放到一个独立容器中才能执行。用户在编写Applet程序的

时候,程序的主类必须被声明为继承自Applet类,通常情况下或者是将主类声明为Applet类的直接子类,或者是将主类声明为Applet类的子类、Swing组件中的一个顶层容器

JApplet类的直接子类。

三、Applet的执行步骤和生命周期
当Java兼容浏览器发现Web页中有Applet时,将通过网络从Applet宿主机上下载Applet程序的主类,并引入其他必要的类,随后在Java兼容浏览器中生成Applet主类的一个对象实例

。同一Web页上的不同Applet主类,以及不同Web页上的Applet主类都会生成不同的对象实例,运行在同一浏览器上的各个Applet程序具有独立的行为。对于Applet而言,浏览器便

是Java运行时系统。

Applet的生命周期是指自Applet程序被下载直至它被系统回收所经历的历程。在这个历程中,有以下事件能够改变Applet的状态。
⒈下载Applet:可以产生一个Applet主类的实例,并对其进行初始化,启动Applet。
⒉离开或返回Applet所在的主页:离开网页或图标化浏览器窗口可使Applet停止运行,返回主页或恢复浏览器窗口可使Applet程序重新启动。
⒊退出浏览器:退出浏览器将使Applet程序停止自身执行,并进行善后处理。

四、Applet的安全机制
由于Applet是通过网络传递并且要经过下载才能被执行的程序,令人非常容易想到安全问题,即病毒传播、系统破坏和通过网络泄露用户端的有关信息等问题,如编写恶意代码通

过Applet程序盗取用户的保密信息并进行传播等。

Java语言提供了一个SecurityManager类用来防止发生上述类似事件,它几乎可以控制Java虚拟机的所有系统级调用,这一整套用来防止各种不安全事件的安全机制被称为“沙箱”

安全机制。对于所运行的Applet程序有以下约束:
⒈Applet只能通过网络通讯将数据写入其宿主机上的应用程序中,由应用程序完成宿主机上的文件写;
⒉Applet不能通过套接字与非宿主机进行网络通讯;
⒊Applet不能在运行它的主机上进行正常的文件操作;
⒋Applet不能调用运行主机上的任何程序。

6.2 编写Applet程序
一、Applet的主要行为

Java语言Application程序在执行时必须首先调用main()方法,进入main()方法之后即开始生成各种对象实例,并通过对象实例调用各个方法成员,待每一个执行过程结束之后,再

依次返回main()方法,这样main()方法成为Application程序的执行入口和出口。

Applet程序的执行过程与Application程序的执行过程有很大的不同,它不包含main()方法,也没有类似的明确的入口与出口。Applet程序也可以包含若干个类,其中也有一个主类

,其程序内容和执行过程则是通过主类中的以下几个方法实现的。

⒈初始化方法init():此方法是在Applet被浏览器下载时被执行的,在Applet的整个生命周期中只须执行一次。

⒉启动方法start():系统在调用完init()方法之后将自动调用start()方法,此后每当返回Applet所在的主页或是恢复浏览器窗口时系统都将调用一次start()方法。该方法中包含

Applet的主体内容。

⒊停止方法stop():每当离开Applet所在的主页或是图标化浏览器窗口时系统都将调用一次stop()方法。

⒋删除方法destroy():当浏览器将关闭时系统将调用destroy()方法杀死所有Applet线程、释放系统资源并进行善后处理,该方法在Applet的整个生命周期中只须执行一次,且是

整个生命周期中调用的最后一个方法。

⒌绘制方法paint(Graphics g):当Applet程序需要在界面上显示某些文字、图形、图像、色彩等等信息时,就需要调用此方法来完成绘制任务,有时为了使程序对于界面上的更新

能够快速响应,还需要多次调用此方法。
显然start()方法与stop()方法都可以被多次调用,并且两种方法是穿插调用的,每一次对stop()方法的调用都是在一次对start()方法的调用之后。

二、Applet编程
程序员在进行Applet程序编程的时候主要要完成三件事:第一是把Applet程序的主类声明为Applet类的直接子类或者是JApplet类的直接子类;第二是把要执行的相关代码通过重写

初始化方法、启动方法、停止方法、删除方法和绘制方法等方法写入Applet程序中;第三是如果需要的话还要再写出Applet程序的主类的其它方法成员及其它的非主类。

由于Applet程序的主类必须要被声明为Applet类或JApplet类的直接子类,这样,Applet程序的主类就不能再继承Applet类或JApplet类以外的类。
在Applet程序中,语句、语法、对象实例等等语言内容与编写Application程序是一样的,在其所包含的类中可以根据需要实现各种接口,也可以使用GUI界面设计技术。

通常情况下,用户主要是根据程序的实际情况重写几个主要的方法成员,大多数情况下仅需重写init()方法和start()方法,需要界面操作时重写paint()方法,stop()方法需要重

写的情形就少一些,而除非特殊情况,很少重写destroy()方法。


带有按钮的具有嵌套布局的Applet程序的简单例子。
例6.1
//Example 1 of Chapter 6

import  java.awt.*;
import  javax.swing.*;

public  class  AppletDemo1  extends  JApplet
{
 JPanel p;
 JButton b1[],b2[];
 public  void  init()
 {
  Container container = getContentPane();
  container.setLayout(new  BorderLayout());
  p = new JPanel();
  p.setLayout(new  GridLayout( 3, 3, 5, 5 ));
  b1 = new JButton[4];
  b2 = new JButton[9];
  for(int i = 0; i<4; i++)
  {
   b1[i] = new JButton("Outer"+i);
  }
  for(int i = 0; i<9; i++)
  {
   b2[i] = new JButton("Inner"+i);
   p.add( b2[i] );
  }
  
  container.add( b1[0] , BorderLayout.NORTH );
  container.add( b1[1] , BorderLayout.SOUTH );
  container.add( b1[2] , BorderLayout.WEST );
  container.add( b1[3] , BorderLayout.EAST );
  container.add( p , BorderLayout.CENTER );
    }
}


三、Applet标记
当一个完整的Applet程序完成以后,就应当运行它。在运行Applet程序时需要将这个Applet程序编译成字节码文件,然后嵌入到HTML文本中作为Web页的一部分发布到Internet上。

嵌入Web页的办法是在HTML文本中采用Applet的有关标记。

HTML文本分为HEAD部分和BODY部分,Applet标记<APPLET>和</APPLET>指明所描述的内容是一个Applet,这一对标记不是标准的HTML标记,只有Java兼容浏览器才支持它,使用时这

一对标记要放在文本的BODY部分,大致格式如下

<HTML>
 <HEAD>
  <TITLE>......</TITLE>
 </HEAD>
 <BODY>
  <APPLET CODE = “AppletDemo1.class”,
WIDTH=200 , HEIGHT=100>
  </APPLET>
 </BODY>
</HTML>


在“<APPLET>”标记和“</APPLET>”标记中可以给出多种可以描述Applet程序的属性:
⒈archive = archiveList,描述存档文件。
⒉code = AppletFile.class,这个属性是必须给出的,代表编译好的Applet程序的字节码文件的文件名,应该是一个相对地址。
⒊width = pixel和height = pixel,这两个属性也是必须要给出的,描述Applet程序显示的初始宽度和高度,此区域仅是Applet程序显示的范围,不包括显示所用的窗口的标题和

边框。
⒋codebase = codebaseURL,代表Applet程序的字节码的基地址,即包含着Applet代码的目录,缺省为当前HTML的URL地址。
⒌alt = alternateText,代表替代文本,即当浏览器不能正确显示Applet或不支持Applet时,将会显示该属性设置的文本。
⒍name = AppletInstanceName,这个属性为当前Applet设置了一个名字,以便同一个主页上的其它Applet能够发现和识别它从而实现相互之间的通讯。
⒎align = alignment,指定Applet显示区的对齐方式,取值范围为:left,right,top,texttop,middle,absmiddle,baseline,bottom,absbottom。
⒏vspace = pixel和hspace = pixel,指定Applet显示区的纵向和横向边缘空出的宽度。
⒐< param name = appletAttribute value = value >,这个标记是在“<APPLET>”标记与“</APPLET>”标记之间的一个属性,可以写上多条,其中的属性名和属性值可以被

Applet类中的getParameter()方法所获取。JDK提供了一个简易的Applet运行器Appletviewer,可以替代浏览器用来运行和调试Applet。Appletviewer可以以命令行方式执行,可以

略去HTML文本中的其他内容而仅仅显示Applet。命令行执行格式为Appletviewer  [-debug]  urls/htmlname用这个工具可以快速观察所编写的Applet程序的图形界面和运行效果,

也可以从网上的HTML文本中迅速找到Applet。
//Example 2 of Chapter 6

import  java.awt.*;
import  java.awt.event.*;
import  javax.swing.*;

public  class  AppletDemo2  extends  JApplet  implements  ActionListener
{
 Container container;
 JButton  BackButton, ForeButton, ResetButton;
 JLabel text;
 Color color1 = Color.lightGray;
 Color color2 = Color.black;
 public  void  init()
 {
  container = getContentPane();
  container.setLayout(new  FlowLayout());
  
  text = new JLabel("show a JColorChooser Using", SwingConstants.CENTER );
  text.setFont( new Font( "Dialog", Font.BOLD, 24));
  
  BackButton = new JButton("调整背景色");
  ForeButton = new JButton("调整前景色");
  ResetButton = new JButton("重置颜色");
  
  BackButton.addActionListener(this);
  ForeButton.addActionListener(this);
  ResetButton.addActionListener(this);
  
  container.add( text );
  container.add( BackButton );
  container.add( ForeButton );
  container.add( ResetButton );
    }
   
    public void actionPerformed( ActionEvent event )
    {
     if( event.getSource() == BackButton )
     {
      color1 = JColorChooser.showDialog( this, "选择颜色", color1);
      if( color1 == null ) color1 = Color.lightGray;
      container.setBackground( color1 );
     }
     
     if( event.getSource() == ForeButton )
     {
      color2 = JColorChooser.showDialog( this, "选择颜色", color2);
      if(color2 == null)color2 = Color.black;
      text.setForeground( color2 );
     }
     
     if( event.getSource() == ResetButton )
     {
      color1 = Color.lightGray;
      container.setBackground( color1 );
      color2 = Color.black;
      text.setForeground( color2 );
     }
    }
}
四、Applet类与JApplet类
Applet类定义在java.applet包中, JApplet类定义在javax.swing包中。使用JApplet作为主类的直接父类能使所编写的Applet程序兼容Swing组件。

在Applet类中定义的方法成员主要有以下几个:
Applet基本方法destroy()、init()、start()、stop(),获取图像和声音的方法getImage()、getAudioClip(),获取当前Applet信息的方法getAppletContext()、getAppletInfo()

,获取当前Applet及其所在文档的URL的方法getCodeBase()、getDocumentBase(),获取HTML文件中参数值的方法getParameter()、getParameterInfo(),声音播放方法play()等。

在JApplet类中,为了能够兼容Swing组件及支持Swing组件新增功能,又增加了一些专门用来进行Swing组件操作的方法:
创建默认rootPane方法createRootPane(),返回此applet的contentPane对象方法getContentPane(),获取菜单栏设置方法getJMenuBar() ,返回此applet的layeredPane对象

getLayeredPane(),返回此applet的rootPane对象getRootPane(),设置contentPane属性setContentPane(),设置此applet的菜单栏setJMenuBar(),设置layeredPane属性

setLayeredPane(),设置rootPane属性setRootPane(),从容器中移除指定组件remove()。
//Example 3 of Chapter 6

import  java.awt.*;
import  java.awt.event.*;
import  javax.swing.*;
import  java.net.URL;

public  class  AppletDemo3  extends  JApplet
{
 private Image im;
 private ImageIcon ii;
 public  void  init()
 {
  getContentPane().setBackground( Color.white );
  URL url = getDocumentBase();
  im = getImage(url, "funnypig.jpg");
  ii = new ImageIcon( "funnypig.jpg" );
 }
 
 public  void  paint( Graphics  g )
 {
  super.paint( g );
  g.setColor( Color.green );
  g.drawLine( 1 , 1 , 399 , 1 );
  g.setFont( new Font( "Dialog", Font.BOLD, 20 ));
  g.drawString( "A funny little pig" , 110 , 30);
  g.drawOval( 60 , 50 , 80 , 90 );
  g.drawOval( 85 , 110 , 30 , 20 );
  g.fillOval( 90 , 116 , 8 , 8 );
  g.fillOval( 102 , 116 , 8 , 8 );
  g.fillOval( 76 , 90 , 10 , 10 );
  g.fillOval( 116 , 90 , 10 , 10 );
  g.drawArc( 8 , 55 , 57 , 30 , 0 , 180 );
  g.drawArc( 135 , 55 , 57 , 30 , 0 , 180 );
  g.drawArc( 8 , 27 , 70 , 80 , 180 , 120 );
  g.drawArc( 123 , 27 , 70 , 80 , 240 , 120 );
  g.drawLine( 90 , 65 , 110 , 65 );
  g.drawLine( 93 , 70 , 107 , 70 );
  g.drawLine( 88 , 75 , 112 , 75 );
  
  g.drawImage( im , 198 , 50 , this );
  ii.paintIcon( this, g, 300, 50 );
 }
}
6.3 Applet多媒体设计
Applet中可以使用Java语言中的全部AWT组件和工具,包括事件和监听器等来构造一个完整的界面。

显示图形界面要用到几个与显示有关的方法,其原型如下
public  void  paint(Graphics  g);
public  void  update(Graphics  g);
public  void  repaint(long  tm , int  x , int  y , int  width , int  height);
在这里用到了Graphics类参数,Graphics类是一个处理各种图形对象的基本抽象类,是Object类的直接子类,其中定义了很多称为绘图原语的方法成员,用来完成基本图形绘制和

画图像等两种绘图,该类是绘图的关键。Applet程序中如果要进行图形化操作,必须用形如import  java.awt.Graphics;或等价的import语句引入Graphics类。
//Example 4 of Chapter 6

import  java.awt.*;
import  java.awt.event.*;
import  javax.swing.*;

public  class  AppletDemo4  extends  JApplet  implements  MouseMotionListener
{
 int x[], y[] ,i = 0;
 public  void  init()
 {
  getContentPane().setBackground( Color.white );
  addMouseMotionListener(this);
  x = new int[10000];
  y = new int[10000];
 }
 
 public  void  paint( Graphics  g )
 {
  super.paint( g );
  g.drawPolyline(x, y, i);
 }
 
 public  void  mouseDragged( MouseEvent  e )
 {
  if(i<x.length)
  {
   x[i] = e.getX();
   y[i] = e.getY();
   i++;
  }
  repaint();
 }
 
 public  void  mouseMoved( MouseEvent  e ) { } 
}

AWT绘图工作通常由一个AWT线程来控制完成,该线程负责两种界面显示工作:

一种是当一个界面刚刚生成以及界面中有被遮挡和破坏部分需要恢复时,此时系统将调用paint()方法;
一种是系统更新显示内容决定重画显示区域时,要调用repaint()方法。
paint(Graphics  g)方法:paint()方法是绘图操作的具体执行者。在Component类中提供的该方法是一个空方法,因此只要在Applet中有任何图形方面的动作,paint()方法必须被

重写,将具体的执行动作写入方法体中。paint()方法一般是Applet程序中必不可少的成员。

二、update(Graphics  g)方法: Component类中提供的该方法完成用背景色填充当前组件,设置前景色,调用paint()方法等工作,作用是更新组件。通常情况下不重写该方法。

三、repaint(long  tm , int  x , int  y , int  width , int  height)方法:该方法的作用是重新绘图,当组件自身发生内容变化时被自动调用。该方法有4种形式的重载,一

般也无需重写。
 
一、图形绘制
在Graphics类中定义了多个方法实现了绘图原语,用以绘制各种基本几何图形,如画线drawLine(),画矩形drawRect()、fillRect(),画立体矩形draw3DRect()、fill3DRect(),

画椭圆drawOval()、fillOval(),画弧drawArc(),画多边形drawPolygon()、fillPolygon()等,利用这些方法成员可以绘制出用户所需的图形。

二、字符串绘制
在Graphics类中定义了一个方法drawString(String  str , int  x , int  y)可以在图形界面上绘制字符串。
三、图像绘制
Java类库中定义了一个java.awt.Image类,在程序中每个具体的图像文件都被看做是该类的一个对象实例。Java语言中支持GIF、JPEG、PNG格式的图像,Applet类方法
public  Image  getImage(URL  url);
public  Image  getImage(URL  url , String  name);
可以得到一个包含图像文件的Image类对象,之后可以用Graphics类方法drawImage()实现图像的显示绘制。
除此之外,也可以使用ImageIcon类实现图像的绘制。由于Image类是抽象类,不能直接初始化,必须用getImage()方法获取实例,并用drawImage()方法绘制,而ImageIcon类可以

直接用构造方法初始化,并用该类的方法成员paintIcon()方法绘制图像,相比之下,后一种方法用ImageIcon类绘制图像更方便一些。
图形绘制、字符串绘制和图像绘制的有关语句在程序中都要写在Applet程序的paint()方法中。

四、动画绘制
Applet中实现动画的基本思路是通过在同一位置上按一定时间间隔显示连续画面的方式实现动画功能,画面可以是图像,也可以是图形。实现动画的主要问题是控制好画面的刷新

时间,如果慢了将出现闪烁,过快也没有必要。一般取值在1/10~1/20秒之间,如果刻意追求动画效果也可以取1/8秒,连续画面可以取1/25秒。
//Example 5 of Chapter 6

import  java.awt.*;
import  java.awt.event.*;
import  javax.swing.*;

public  class  AppletDemo5  extends  JApplet  implements  ActionListener
{
 private  ImageIcon  cat[], flower[];
 private  int  Numbercat = 8, Numberflower = 4, current1 = 0, current2 = 0;
 private  int  delay1 = 200, delay2 = 300;
 private  int  width1, width2, height1, height2;
 private  Timer  timer1, timer2;
 
 public  void  init()
 {
  getContentPane().setBackground( Color.white );
  cat = new ImageIcon[ Numbercat ];
  flower = new ImageIcon[ Numberflower ];
  for (int i = 0; i<cat.length; i++)
  cat[i] = new ImageIcon( "gifmovies/" + "02_0" + i +".gif" );
  for (int i = 0; i<flower.length; i++)
  flower[i] = new ImageIcon( "gifmovies/" + "18_0" + i + ".gif" );
  
  width1 = cat[0].getIconWidth();
  height1 = cat[0].getIconHeight();
  width2 = flower[0].getIconWidth();
  height2 = flower[0].getIconHeight();
 }
 
 public  void  paint( Graphics  g )
 {
  super.paint( g );
  g.setFont( new Font( "Dialog", Font.BOLD, 16 ));
  g.drawString( "Animation Demonstration" , 15 , 15);
  
  cat[ current1 ].paintIcon( this, g, 10, 22 );
  if( timer1.isRunning() ) current1 = ( current1 + 1 ) % Numbercat;
  flower[ current2 ].paintIcon( this, g, 150, 22 );
  if( timer2.isRunning() ) current2 = ( current2 + 1 ) % Numberflower;
 }
 
 public  void  start()
 {
  if( timer1 == null )
  {
   current1 = 0;
   timer1 = new Timer( delay1, this );
   timer1.start();
  }
  else
  {
   if ( ! timer1.isRunning() ) timer1.restart();
  }
  
  if( timer2 == null )
  {
   current2 = 0;
   timer2 = new Timer( delay2, this );
   timer2.start();
  }
  else
  {
   if ( ! timer2.isRunning() ) timer2.restart();
  }
 }

 public  void  stop()
 {
  timer1.stop();
  timer2.stop();
 }
 
 public  void  actionPerformed( ActionEvent  e )
 {
  repaint();
 }
}
五、声音播放
有两种可以在Applet程序中播放声音的方法,一种是利用AudioClip接口的几个方法成员实现,另一种是利用Applet类中的play()方法实现。
在java.applet包中定义了一个AudioClip接口,这是一个声音接口,声音文件可以看成是该接口的一个对象,其中的三个方法成员
public void play()                 //播放声音
public void loop()                 //循环播放声音
public void stop()                 //停止播放声音
可用来播放声音。
在Applet类中定义了以下与声音有关的方法:
getAudioClip(URL url)              //返回由参数URL指定的AudioClip
getAudioClip(URL url, String name) //返回由参数URL和name指定的AudioClip
play(URL url)                      //播放在指定的绝对URL处的音频
play(URL url, String name)         //播放给定URL和与其相关的说明符的音频
也可以用来实现声音片段的播放。
实际编写程序时,总是把声音文件与HTML文档、字节码文件放在一起,所以当需要提供URL的时候,可以使用Applet类中的getDocumentBase()方法或者是getCodeBase()方法得到。
Java语言用来播放声音文件的引擎支持如下几种音频文件格式:Sun Audio文件格式(.au)、Windows Wave文件格式(.wav)、Macintosh AIFF文件格式(.aif)以及MIDI文件格

式(.mid或.rmi)。

可以在Applet中同时播放多个声音片段,听到的则是它们的混合音。
Java语言多媒体功能实际上远不止这些,早在1998年Sun公司就制订了Java Media APIs,用以增强Java语言对多媒体的支持,其中包括:
Java 2D API
Java 3D API
Java Advanced Imaging API
Java Media Framework API
Java Sound API
Java Speech API
Java Telephony API
等。
//Example 6 of Chapter 6

import  java.applet.*;
import  java.awt.*;
import  java.awt.event.*;
import  javax.swing.event.*;
import  javax.swing.*;

public  class  AppletDemo6  extends  JApplet
{
 private  AudioClip  currentSound;
 private  JList  choose;
 private  JButton  play, loop, stop;
 private  String  choices[] = { "danger.au", "wrong.wav", "popped.aif" };
 private  int  switchkey = 0;
 
 public  void  init()
 {
  Container  container = getContentPane();
  container.setLayout( new FlowLayout() );
  currentSound = getAudioClip( getDocumentBase(), choices[ 0 ] );
  choose = new JList( choices );
  
  choose.addListSelectionListener
  (
   new  ListSelectionListener()
   {
    public  void  valueChanged(ListSelectionEvent e)
    {
     int  k = -1;
     for(int i=0; i<choices.length; i++)
     {
      if ( choices[ i ]==choose.getSelectedValue()) k = i;
     }
     
     currentSound.stop();
     currentSound = getAudioClip( getDocumentBase(), choices[ k ] );
    }
   }
  );
  container.add( choose );
  
  ButtonHandler handler = new ButtonHandler();
  
  play = new JButton( "Play" );
  play.addActionListener( handler );
  container.add( play );
  
  loop = new JButton( "Loop" );
  loop.addActionListener( handler );
  container.add( loop );
  
  stop = new JButton( "Stop" );
  stop.addActionListener( handler );
  container.add( stop );
 }
 
 public  void  start()
 {
  switch(switchkey)
  {
   case 1:
    currentSound.play();
    play.setSelected( true );
    break;
   case 2:
    currentSound.loop();
    loop.setSelected( true );
    break;
   case 3:
    currentSound.stop();
    stop.setSelected( true );
  }
 }
 
 public  void  stop()
 {
  currentSound.stop();
 }
 
 private  class  ButtonHandler  implements  ActionListener
 {
  public  void  actionPerformed( ActionEvent actionEvent )
  {
   if ( actionEvent.getSource() == play )
   {
    switchkey = 1;
    currentSound.play();
   }
   if ( actionEvent.getSource() == loop )
   {
    switchkey = 2;
    currentSound.loop();
   }
   if ( actionEvent.getSource() == stop )
   {
    switchkey = 3;
    currentSound.stop();
   }
  }
 }
}
6.4 Applet的交互功能与通信功能
一、Applet的交互功能

Applet程序可以通过处理事件支持交互功能,从而实现具有交互功能的网页。可以在Applet程序的类中实现监听器接口,重写接口的方法成员而实现该功能。

二、读取HTML参数
Applet类中提供了一个getParameter(String  name)方法,可以让程序从HTML文件中获取指定的参数所对应的值。
//Example 7 of Chapter 6

import  java.applet.Applet;
import  java.awt.*;
import  java.awt.event.*;
import  javax.swing.event.*;
import  javax.swing.*;

public  class  AppletDemo7  extends  JApplet
{
 String  name, age;
 int  ageValue = 0;
 
 public  void  init()
 {
  name = getParameter("name");
  if( name == null ) name = "No one";
  age = getParameter("age");
  if( age == null) age = "0";
  ageValue = Integer.parseInt(age);
 }
 
 public  void  paint( Graphics  g )
 {
  g.setFont( new Font( "Dialog", Font.BOLD, 16 ));
  g.drawString("The name is:"+name,5,25);
  g.drawString(name+"/'s age is:"+age,5,55);
 }
}

三、Applet与其他程序的通信
在Web页中的Applet不仅是可独立执行的Java程序,而且可以与其他各种服务程序进行通信,目前的Applet程序能够完成下述三种方式的程序间的通信:
⒈通过请求同一Web页上其他Applet程序中的公有方法,实现与同一Web页上其他Applet程序的通信;
⒉通过使用定义在java.applet包中的API,以受限方式与包含自身的浏览器通信;
⒊通过使用定义在java.net包中的API利用网络与运行在该Applet程序的宿主机上的程序通信。
关于这些通讯的细节,请参照有关的资料。

四、Application与Applet的简要比较
相同之处:
◆  遵循相同的语法,使用同样的语句
◆  可以实现图形界面
◆  通过Internet进行传播
不同之处:
  Application
◆完整的高级语言程序
◆运行在Java运行时系统的解释器上
◆可以进行正常的读写操作
◆不能演播声音
◆不能显示HTML文本
  Applet
◆不是完整的程序
◆运行在Java兼容浏览器中
◆读写能力受到很大限制
◆可以演播声音
◆可以显示HTML文本

I2C总线原理及总线信号的实现 I2C总线是一种多主机总线,连接IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,I2C也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;I2C总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;主要用于近距离(抗干扰能力稍弱),低速的芯片之间的通信(传输视频,带宽 阅读详情

相关推荐

Unity3D移动平台简单实现

在电子游戏中移动平台可谓是十分常见的,如平台从一处至另一处的来回移动,或当需要玩家触发机关时,平台浮动并按一定的路线移动至目标处。本文主要是在Unity3D引擎下使用少量脚本实现两点之间来回移动平台的最基本功能,是一种比较简单且好理解的移动平台解决方案。 涉及到的点如下: 平台对象的实现 平台移动路线的设定 处于平台上游戏对象(如:玩家)的相对运动 创建平台控制对象 创建平台实...

长溪木可的博客 4683

Java中的Applet是什么?如何实现Applet

总的来说,Applet的跨平台性是一项非常有价值的特性,它可以帮助开发者和用户节省时间和精力,同时也可以为产品的推广和市场营销提供重要的帮助。不过,随着计算机技术的不断进步,现代浏览器和计算机已经足够强大,能够很好地支持Applet的运行,因此用户不必过于担心Applet的性能问题。此外,还可以在Applet中显示动画和图像,甚至可以播放音频和视频文件,从而为用户提供更加丰富的体验。无论是为了学习Java编程,还是为了使用Applet的功能,这一过程都将为您打开一扇新的大门,让您享受到Java编程的乐趣。

2301_77769537的博客 3076

从零到一:海外短剧成品系统源码搭建流程详解及APP+H5交付服务

在当今全球化的数字娱乐浪潮中,海外短剧市场以其独特的文化魅力和广阔的受众基础,正逐渐成为内容创作者与平台运营者争相布局的新蓝海。我为了紧跟时代的发展我翻看了大量的文章,偶然间看到了一篇文章点进去发现他们是专业做短剧开发的,总结下来在这篇文章里分享给大家。

liangyill_的博客 909

Java图形用户界面之Applet设计

Java Applet 是一种用Java编写的、含有可视化内容并嵌入在网页中、由浏览器软件下载并运行的程序。它的编辑和编译过程与 Java Application(Java 应用程序)相同,但它的结构与 Java 应用程序不同。Java Applet 没有程序执行的入口 main()方法,不能独立运行,因此 Java Applet 应嵌入在一个网页内,由浏览器软件解释执行。在Java Applet中,可以实现图形绘制、字体和颜色控制、动画和声音的播放、人机交互及网络交流等功能。

qq_74013365的博客 2012

大陆毫米波雷达ARS408-21xx实战:从零搭建ROS环境下的目标检测与可视化

本文详细介绍了大陆毫米波雷达ARS408-21xx在ROS环境下的实战部署全流程。从硬件连接、CAN总线配置,到ROS驱动节点开发、CAN报文解析,再到RViz三维可视化实现,提供了完整的代码示例与调试技巧,帮助开发者快速搭建毫米波雷达目标检测与可视化系统。

open4的博客 633

161、车载环视系统的ISP多路同步架构——海思Hi3516DV300的4路鱼眼校正与拼接的帧同步误差控制

文章摘要: 针对海思Hi3516DV300车载环视系统四路鱼眼摄像头拼接画面动态撕裂问题,分析发现根本原因为帧同步误差(部分通道帧起始时间差1.2ms)。关键解决措施包括:1)通过VI通道主从同步模式(MASTER/SLAVE)结合软件补偿控制帧延迟;2)优化VPSS通道帧率锁定与丢帧策略确保拼接时序一致;3)严格校准鱼眼校正LUT参数与产线标定数据匹配;4)建议采用硬件同步信号(如sensor的FSIN引脚)降低软件同步压力。调试阶段需通过示波器直接测量sensor VSYNC信号,量产时需注意动态切换分

zzfmlxs的博客 137

java applet编程_JavaApplet编程技巧

JavaApplet编程技巧陈冲--------------------------------------------------------------------------------1.JavaApplet概述JavaApplet程序分为两类:Java小程序(Applet)和Java应用程序(Application),这两类程序...

weixin_35781524的博客 481

网络系统管理专栏-配套练习+知识点详解

网络系统管理专栏-配套练习+知识点详解

bfq05234214的博客 683

java applet编程_第二十讲 Java Applet程序设计

第二十讲Java Applet程序设计主要内容初识Java AppletJava Applet的生命周期Graphics类和图像图形绘制Applet中播放声音媒体初识Java Applet一个简单的Java Applet示例import javax.swing.*;import java.awt.*;public class FirstApplet extends JApplet{public v...

weixin_30002803的博客 602

dToF直方图之美_deadtime死区时间

IMX459的死区时间可以在6ns,这个时间是什么级别,车载激光雷达激光器的光脉宽一般都在4ns以上,也就是这个时间贴近去SPAD的死区时间,这就导致了pile up会非常弱,不会有太多数量的光子计数堆积,加上某些SPAD设计,对TDC有一些更深入的考量,所以不需要去校正pile up算法。Sensor层面决定了pile up的复杂程度,如果一个dToF的SPAD一致性非常好,那么pile up校正可以简单到极致,也就是一句代码的事,比如IMX611,优秀到不需要后端去考虑校正pile up。

致力于lidar应用开发 2149

优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信

优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信今天开始会陆续介绍一些优秀的开源项目,项目基本都是和FPGA或HDL相关的。对于一些找工作或者急需项目经验的人来说,这些项目...

OpenFPGA的博客 8117

Java Applet

Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。 Applet特点 Applet 类继承了 java.applet.Applet 类 Applet 类没有定义 main(),所以一个 Applet 程序不会调用 main() 方法 Applet 被设计为嵌入在一个 HTML 页面 用户浏览含有Applet的HTML页面时,Applet代码会下载到电脑上 查看Appl

十二间记,知不足而奋斗,望远山而前行。千里不辞行路远,时光早晚到天涯。 3210

188、LLC谐振变换器的样机调试实战(EMI测试)

本文分享了LLC谐振变换器EMI调试的实战经验。作者通过300W电源案例,指出LLC的EMI问题主要来自谐振腔共模电流和死区振铃,并提出三板斧解决方案:优化功率回路布局、合理选择共模电感、正确配置X/Y电容。文章详细分析了谐振电容位置、MOSFET走线、变压器屏蔽等关键设计要点,并列举示波器探头、滤波器接地等常见误区。最后强调EMI调试70%依赖布局优化,建议预扫测试、数据记录并保留6dB余量。全文以实际案例贯穿,为LLC电源EMI设计提供了实用指导。

Jack010169的博客 57

二级java程序设计--Applet程序设计

二级java程序设计--Applet程序设计

Leo的博客 1364

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java applet

Java Applet就是用Java语言编写的小应用程序,它们可以直接嵌入到网页中,并能够产生特殊的效果 applet经编译后,会产生.class的文件,把.class的文件嵌在html的网页中,只要用户连到一个网页里,applet便会随着网页下载到用户的计算机运行 applet类的继承关系如下: java.lang.Object   java.awt.Component     jav

菜鸟的奋斗 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

编写java applet_使之能在浏览器窗口显示_Java Applet程序设计基础

Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持J...

weixin_36373787的博客 1295

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

如何在HTML中加入Java Applet

Java语言,一个现在比较流行的语言,也许你或多或少的对它有一些了解。今天我将向你讲授如何在你的HTML语言中加入HTML语言中。如果你学过Webmonkey的有关Java的课程,那你应该知道使用Java可以编写两种类型的程序:一个是应用程序 (Application),另一个是小应用程序(Applet)。应用程序是可以独立运行的程序,而小应用程序(Applet)不能独立 运行,而是要嵌入HTML

dengsenhu的专栏 6601

java applet wiki_Applet

AppletApplet(小应用程序)采用Java创建的基于HTML的程序。浏览器将其暂时下载到用户的硬盘上,并在Web页打开时在本地运行。一般的Applet只能通过Appletviewer或者浏览器来运行,一般的Java程序通过继承Applet类也可以嵌入网页运行。含有Applet的网页的HTML文件代码中必须带有<applet>和</applet>这样一对标记,当支持Java的网络浏览器遇...

weixin_42552261的博客 201

Java 中 Applet 类继承了 java.applet.Applet 类

Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。

2501_94294320的博客 734

Java Applet程序设计

Java 实验一 Applet程序设计 随机生成1~6之间的数字,统计100次,输出每个生成数字出现的次数。 输出方式用Applet画出柱状图,运行结果如下,红色轴、绿色轴分别代表最小次数和最大次数。 import java.applet.Applet; import java.awt.*; public class shiyan1 extends Applet{ public void paint(Graphics g){ int num,i,max,min,a[]={0,0,0,0,0,0};

与我无关的博客 949

java applet程序设计,Java Applet程序设计基础

Java Applet程序设计基础Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。当用户访问这样的网页时,Applet被下载到用户的计算机...

weixin_39942992的博客 480

下面关于java. applet._2016年计算机二级考试《JAVA》习题:Applet程序设计

第10章 Applet程序设计1[单选题]在Java applet程序中,用户自定义的Applet子类常常覆盖父类的(  )方法来完成applet界面的初始化工作。A.start( ) B.stop( ) C.init( ) D.paint( )参考答案:C2[单选题]在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上(  )语句。A.import ja...

weixin_33643727的博客 614

java applet怎么运行_Java如何运行Applet?运行Applet的两种方式

详细内容applet是一个小型的动态Java程序,那么如何运行Applet?本篇文章就给大家介绍Applet,让大家了解Applet是什么,运行Applet的方法,希望对你们有所帮助。Java applet是什么?applet是一个小型的动态Java程序,它可以嵌入在HTML代码中,通过Internet传输并由兼容Java的Web浏览器运行,在客户端计算机上工作。说明:1、applet通常在App...

weixin_42393342的博客 5456

java的applet使用字体_java Applet 程序设计讲解2 字体,颜色的使用

java Applet 程序设计讲解2 字体,颜色的使用关键词: 字体 颜色图形界面输出用到的字体,颜色的使用1、字体类 (Font类)构造方法:Font(String fontname,int style,int size)fontname: 字形名称,例如:“黑体”,“宋体”style: 字体样式:整形常量,常使用Font类定义好的常量size: 用象素点表示的字符大小常用成员方法:获取...

weixin_39817176的博客 339

Java Applet 基础

Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。

2404_89484254的博客 1051

java applet开发_Java Applet程序开发步骤

Java最初奉献给世人的就是Java Applet,随即它吸引了全世界的目光,Java Applet运行于浏览器上,可以生成生动美丽的页面,进行友好的人机交互,同时还能处理图像、声音、动画等多媒体数据。Java Applet在Java的成长过程中起到不可估量的作用,到今天Java Applet依然是Java程序设计最吸引的人之一。在本期专题中我将向读者介绍Java Applet编程的一些技巧。Ja...

weixin_28757113的博客 2050
上一篇: 通过一个游戏编程熟悉事件处理
下一篇: Java第九次课-输入输出
flyuniverse_shell
博客等级 码龄18年 119粉丝 121原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值