Applet间的通讯(1)--TricksoftheJavaProgrammingGurus(转)

Applet间的通讯(1)--Tricks of the Java Programming Gurus (转)[@more@]

Tricks
 of the
 Java Programming Gurus

by Glenn L. Vanderburg. et al.

1.Applet间的通讯


目录

  • .NET/editor1/editor.htm#getAppletTheOfficialMechanism">getApplet: 官方机制
  • 静态变量和方法
  • 网络通讯
  • dbasedCommunication">基于线程的通讯
  • 总结

  考虑到你要完成的任务,一个applet,甚至几个独立的applet,有时可能都不够。还好,applet之间可以通讯,通过协作它们可以完成一些更复杂的任务。一组协作的applet所能产生的效能使单个applet所不能媲美的。

  Applet之间的通讯可以通过传统方法实现:applet可以互相调用对方的成员方法或者通过socket或数据流通讯。事实上,applet间互相查找的途径有很多,每一种方法都有自身的优缺点。本文将讨论四种通讯机制,并给出一个较为复杂的例子,在这个例子中我们将使用其中一种通讯机制。

getApplet: “官方”机制

  Java api 本身就有用来支持applet程序间协作的特性:AppletContext 类的 getAppletgetApplets 方法。设有这两个函数,applet程序可以通过名称查找并访问对方。你可以这样调用 getApplet

Applet friend = getAppletContext().getApplet("Friend");

  一旦调用结束,变量 friend 就成了名为"Friend"的applet的一个实例(instance) (如果这样的一个"Friend"applet存在的话)。例如:如果 "Friend" 是 Sun的 Animator applet 的一个实例,friend 将包含对这个实例的一个参考(reference)。

  Applet的名字是在HTML中指定的,而不是在Java代码中。为了创建一个能被前面的实例代码所发现的animator applet,你可以在HTML插入如下几行: