随笔 - 71  文章 - 15  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

因为口渴,上帝创造了水;
因为黑暗,上帝创造了火;
因为我需要朋友,所以上帝让你来到我身边
Click for Shaanxi xi'an, Shaanxi Forecast
╱◥█◣
  |田|田|
╬╬╬╬╬╬╬╬╬╬╬
If only I have such a house!
〖总在爬山 所以艰辛〗
Email:myesjoy@yahoo.com.cn
NickName:yesjoy
MSN:myesjoy@hotmail.com
QQ:150230516

〖总在寻梦 所以苦痛〗

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

Hibernate在线

Java友情

Java认证

linux经典

OA系统

Spring在线

Structs在线

专家专栏

企业信息化

大型设备共享系统

工作流

工作流产品

网上购书

搜索

  •  

最新评论

阅读排行榜

评论排行榜

Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Nescape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页。
  当用户访问这样的网页时,Applet被下载到用户的计算机上执行,但前提是用户使用的是支持Java的网络浏览器。由于Applet是在用户的计算机上执行的,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。
  Applet 小应用程序的实现主要依靠java.applet 包中的Applet类。与一般的应用程序不同,Applet应用程序必须嵌入在HTML页面中,才能得到解释执行;同时Applet可以从Web页面中获得参数,并和Web页面进行交互。
  含有Applet的网页的HTML文件代码中必须带有<applet>和</applet>这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载相应的小程序代码并在本地计算机上执行该Applet小程序。
  Applet是一种Java的小程序,它通过使用该Applet的HTML文件,由支持Java的网页浏览器下载运行。也可以通过java开发工具的appletviewer来运行。Applet 程序离不开使用它的HTML文件。这个HTML文件中关于Applet的信息至少应包含以下三点:
  1)字节码文件名(编译后的Java文件,以.class为后缀)
  2)字节码文件的地址
  3)在网页上显示Applet的方式。
  一个HTML文件增加Applet有关的内容只是使网页更加富有生气,如添加声音、动画等这些吸引人的特征,它并不会改变HTML文件中与Applet无关的元素。

  (一) Applet程序开发步骤
  Applet程序开发主要步骤如下:
  1)选用EDIT或Windows Notepad等工具作为编辑器建立Java Applet源程序。
  2)把Applet的源程序转换为字节码文件。
  3)编制使用class 的HTML文件。在HTML文件内放入必要的<APPLET>语句。
  下面举一个最简单的HelloWorld 例子来说明Applet程序的开发过程:
  (1) 编辑Applet 的java源文件
  创建文件夹C:\ghq,在该文件夹下建立 HelloWorld.java
  文件的源代码如下:      

import java.awt.*;
import java.applet.*;
public class HelloWorld extends Applet //继承Appelet类,这是Appelet Java程序的特点
{
 
public void paint(Graphics g )
 {
  g.drawString(
"Hello World!",5,35);
 }
}


  保存上述程序在C:\ghq\HelloWorld.java文件里。
  (2)编译Applet
  编译HelloWorld.java源文件可使用如下JDK命令:

C:\ghq\>javac HelloWorld.java<Enter>

  注意:如果编写的源程序违反了Java编程语言的语法规则,Java编译器将在屏幕上显示语法错误提示信息。源文件中必须不含任何语法错误,Java编译器才能成功地把源程序转换为appletviewer和浏览器能够执行的字节码程序。
  成功地编译Java applet之后生成响应的字节码文件HelloWorld.class的文件。用资源管理器或DIR命令列出目录列表,将会发现目录C:\ghq中多了一个名为HelloWorld.class的文件。
  (3)创建HTML文件
  在运行创建的HelloWorld.class 之前,还需创建一个HTML文件,appletviewer或浏览器将通过该文件访问创建的Applet。为运行HelloWorld.class, 需要创建包含如下HTML语句的名为HelloWorld.html的文件。

<HTML>
<TITLE>HelloWorld! Applet</TITLE>
<APPLET
CODE="HelloWorld.class"
WIDTH
=200
HEIGHT=100>
</APPLET>
</HTML> 

  本例中,<APPLET>语句指明该Applet字节码类文件名和以像素为单位的窗口的尺寸。虽然这里HTML文件使用的文件名为HelloWorld.HTML,它对应于HelloWorld.java的名字,但这种对应关系不是必须的,可以用其他的任何名字(比如说Ghq.HTML)命名该HTML文件。但是使文件名保持一种对应关系可给文件的管理带来方便。
  (4)执行 HelloWorld.html
  如果用appletviewer运行HelloWorld.html,需输入如下的命令行:

C:\ghq\>appletviewer JavaWorld.html<ENTER>

  可以看出,该命令启动了appletviewer并指明了HTML文件,该HTML文件中包含对应于HelloWorld 的<APPLET>语句。
  如果用浏览器运行HelloWorld Applet,需在浏览器的地址栏中输入HTML文件URL地址。
  至此,一个Applet程序的开发运行整个过程结束了(包括java源文件、编译的class文件、html文件以及用appletviewer或用浏览器运行)。

  (二) Applet类
  Applet类是所有Applet应用的基类,所有的Java小应用程序都必须继承该类。如下所示。
  Applet类的构造函数只有一种,即:public Applet()
  Applet实现了很多基本的方法,下面列出了Applet类中常用方法和用途。

public final void setStub(AppletStub stub)
//设置Applet的stub.stub是Java和C之间转换参数并返回值的代码位,它是由系统自动设定的。
public boolean isActive();// 判断一个Applet是否处于活动状态。
public URL getDocumentBase();// 检索表示该Applet运行的文件目录的对象。
public URL getCodeBase();// 获取该Applet 代码的URL地址。
public String getParameter(String name);// 获取该Applet 由name指定参数的值。
public AppletContext getAppletContext();// 返回浏览器或小应用程序观察器。
public void resize(int width,int height);// 调整Applet运行的窗口尺寸。
public void resize(Dimension d);// 调整Applet运行的窗口尺寸。
public void showStatus(String msg);// 在浏览器的状态条中显示指定的信息。
public Image getImage(URL url); // 按url指定的地址装入图象。
public Image getImage(URL url,String name);// 按url指定的地址和文件名加载图像。
public AudioClip getAudioClip(URL url);// 按url指定的地址获取声音文件。
public AudioClip getAudioClip(URL url, String name);// 按url指定的地址和文件名获取声音。
public String getAppletInfo();// 返回Applet应用有关的作者、版本和版权方面的信息;
public String[][] getParameterInfo();
// 返回描述Applet参数的字符串数组,该数组通常包含三个字符串: 参数名、该参数所需值的类型和该参数的说明。
public void play(URL url);// 加载并播放一个url指定的音频剪辑。
public void destroy();//撤消Applet及其所占用的资源。若该Applet是活动的,则先终止该Applet的运行。

  (1) Applet运行状态控制基本方法
  Applet类中的四种基本方法用来控制其运行状态:init()、start()、stop()、destroy()
  init()方法
  这个方法主要是为Applet的正常运行做一些初始化工作。当一个Applet被系统调用时,系统首先调用的就是该方法。通常可以在该方法中完成从网页向Applet传递参数,添加用户界面的基本组件等操作。
  start()方法
  系统在调用完init()方法之后,将自动调用start()方法。而且,每当用户离开包含该Applet的主页后又再返回时,系统又会再执行一遍start()方法。这就意味着start()方法可以被多次执行,而不像init()方法。因此,可把只希望执行一遍的代码放在init()方法中。可以在start()方法中开始一个线程,如继续一个动画、声音等。
  stop()方法
  这个方法在用户离开Applet所在页面时执行,因此,它也是可以被多次执行的。它使你可以在用户并不注意Applet的时候,停止一些耗用系统资源的工作以免影响系统的运行速度,且并不需要人为地去调用该方法。如果Applet中不包含动画、声音等程序,通常也不必实现该方法。
  destroy()方法
  与对象的finalize()方法不同,Java在浏览器关闭的时候才调用该方法。Applet是嵌在HTML文件中的,所以destroty()方法不关心何时Applet被关闭,它在浏览器关闭的时候自动执行。在destroy()方法中一般可以要求收回占用的非内存独立资源。(如果在Applet仍在运行时浏览器被关闭,系统将先执行stop()方法,再执行destroy()方法。
下面一个程序可以更好的帮助我们理解Java Applet在整个生命周期是如何调用上面我们介绍的几个方法的。
  文件名:StartStop.java

import java.awt.*;
import java.applet.*;
public class StartStop extends Applet
{
  StringBuffer message;
  
public void init()
  {
    message
=new StringBuffer("Init done");
  }  
  
public void start()
  {
    message.append(
"Started");
  }
  
public void stop()
  {
    message.append(
"Stopped");
  }
  
public void paint(Graphics g)
  {
    g.drawString(message.toString(),
50,50);
  }
}

      文件名:StartStop.html
<HTML>
<TITLE>test process Applet</TITLE>
<body>
Here comes my process applet:
<br>
<APPLET
CODE="StartStop.class"
WIDTH
=400
HEIGHT=100>
</APPLET>
</body>
</HTML>

  (2) Applet应用的有关参数说明
  利用Applet来接收从HTML中传递过来的参数,下面对这些参数作一简单说明:
  * CODE标志
  CODE标志指定Applet的类名;WIDTH和HEIGHT标志指定Applet窗口的像素尺寸。在APPLET语句里还可使用其他一些标志。
  * CODEBASE 标志
  CODEBASE标志指定Applet的URL地址。Applet的通用资源定位地址URL,它可以是绝对地址 ,如www.sun.com。也可以是相对于当前HTML所在目录的相对地址,如/AppletPath/Name。如果HTML文件不指定CODEBASE 标志,浏览器将使用和HTML文件相同的URL。
  * ALT 标志
  虽然Java在WWW上很受欢迎,但并非所有浏览器都对其提供支持。如果某浏览器无法运行Java Applet,那么它在遇到APPLET语句时将显示ALT标志指定的文本信息。
  * ALIGN 标志
  ALIGN标志可用来控制把Applet窗口显示在HTML文档窗口的什么位置。与HTML<LMG>语句一样,ALIGN标志指定的值可以是TOP、MIDDLE或BOTTOM。
  * VSPACE与HSPACE 标志
  VSPACE和HSPACE标志指定浏览器显示在Applet窗口周围的水平和竖直空白条的尺寸,单位为像素。如下例使用该标志在Applet窗口之上和之下各留出50像素的空白,在其左和其右各留出25像素的空白:
  * NAME 标志
  NAME标志把指定的名字赋予Applet的当前实例。当浏览器同时运行两个或多个Applet时,各Applet可通过名字相互引用或交换信息。如果忽略NAME标志,Applet的名字将对应于其类名。
  * PARAM 标志
  通用性是程序设计所追求的目标之一。使用户或者程序员能很方便地使用同一个Applet完成不同的任务是通用性的具体表现。从HTML文件获取信息是提高Applet通用性的一条有效途径。
  假设编制了一个把某公司的名字在屏幕上卷动的Applet。为了使该Applet更加通用,则可以使该Applet从HTML文件获取需要卷动的文本信息。这样,若想显示另一个公司的名字,用不着修改Java Applet本身,只需修改HTML文件即可。
  PARAM 标志可用来在HTML文件里指定参数,格式如下所示:
PARAM Name="name" Value="Liter"
  Java Applet可调用getParameter方法获取HTML文件里设置的参数值。
然而,JDK并不是可视化的RAD(rapid application development)开发工具,对于对象的使用不能如Delphi那样只需要拖拉,移位就可以,而需要我们写调用代码.这就产生了一个麻烦,我怎么样才能够让元素按我的要求在界面中摆放呢?在元素不多时可以让Java自动布局(Layout),但是元素很多时,或者需要根据应用程序的要求来摆放元素时,就需要使用面板了(Panel).面板在Delphi里也有相应的组件(TPanel),但主要是用来对界面分割,进行粗略的布局的,精确的定位还需要开发人员手动调节.而Java则只能用Panel来定位,不能不说是个缺陷.也许是我还没学到吧。

  入门之后,就该深入到对象的概念了。
  假设在Java中创建了一个叫做Date的自定义数据类型如下
 public class Date{
    int day;
    int month;
    int year;
  }
 那么对于以下三条声名变量的语句,java在为其分配内存的时候有什么不同吗? 
 (1) int i;
  (2) Date mybirth;
  (3) Date mybirth=new Date();
  很显然是有的,分配情况如下:
  (1)Java自动为整数i分配整形变量的内存,一般是两个字节
  (2)Java声明了一个Date类的实例变量mybirth,并为其分配了存储空间,但这个存储空间里面存储的只是一个引用,或者说是一个地址,目前的地址里面什么都没有,那么我们就还不能使用这个实例变量,不能引用它的成员。
  (3)Java创建了一个Date类的实例变量mybirth,并为其成员变量分配了足够的存储空间,最后返回对这个存储空间的一个引用,也就是返回这个存储空间的首地址,以后就通过mybirth,即这个首地址来访问这个实例变量里面的各个成员,如mybirth.day,mybirth.month,mybirth.year。
  当我们声明一个基本数据类型的变量(如boolean, byte, short, char, int,long,flat,double)时,系统会自动为变量分配内存。但是如果声明了String或者用户自定义的变量时,系统不会立即为其分配内存.为什么会这样呢?
  这是因为,String和用户自定义的变量都属于类的范畴.一个被声明为类的变量,已经不再是一个数据了,而变成对数据的一个引用,就是说mybirth可以看作是一个指向类的一个实例的指针,里面存放的是地址.这样的话就好理解了。
  深入一点,既然类的实例变量值是指针,这个指针指向一个类的实例,那么我们显然可以定义多个名称不同的类的实例变量,而将它们全都指向一个实例。比如:
   University u=new University();//定义了一个类University的实例变量u,并为其分配对象的存储空间
  University u2=u;//又定义了一个实例变量u2,将u的值赋给u2
  那么显然u2和u除了名称不同外,其实是一回事,因为它们指向相同一个地址.
  我觉得弄清楚这一点还是很重要的。这些数据结构的东西,是一个程序员需要知道的所以然.

posted on 2006-02-08 21:32 ★yesjoy★ 阅读(546) 评论(0)  编辑  收藏 所属分类: java.applet包

只有注册用户登录后才能发表评论。


网站导航: