文档

Java™教程
隐藏目录
与其他Applets通信
路径: 部署
课程: Java Applets
章节: 更多Applets操作

与其他Applets通信

Java applet可以通过在父网页中使用JavaScript函数与其他Java applet进行通信。JavaScript函数通过接收来自一个applet的消息并调用其他applet的方法来实现applet之间的通信。有关Java代码和JavaScript代码之间交互的更多信息,请参阅以下主题:

您应该避免使用以下机制来查找其他applet并在applet之间共享数据:

Applet必须来自服务器上的同一目录才能相互通信。

下面显示了Sender和Receiver applet。当用户点击按钮以增加计数器时,Sender applet调用JavaScript函数向Receiver applet发送请求。接收到请求后,Receiver applet增加一个计数器变量并显示变量的值。

Sender Applet



Receiver Applet


注意:  如果您看不到applet运行,请安装至少 Java SE Development Kit (JDK) 6 update 10版本。

注意:如果您看不到示例正在运行,可能需要在浏览器中启用JavaScript解释器,以便Deployment Toolkit脚本能够正常工作。

要启用与另一个小程序的通信,需要获取netscape.javascript.JSObject类的实例引用。使用此实例调用JavaScript函数。Sender小程序使用netscape.javascript.JSObject类的实例来调用名为sendMsgToIncrementCounter的JavaScript函数。

try {
    JSObject window = JSObject.getWindow(this);
    window.eval("sendMsgToIncrementCounter()");
} catch (JSException jse) {
    // ...
}

注意:要编译具有对netscape.javascript包中类的引用的Java代码,请在类路径中包含<您的JDK路径>/jre/lib/plugin.jar。在运行时,Java插件软件会自动将这些类提供给小程序。

编写将接收来自一个小程序的请求并调用网页上另一个小程序的方法的JavaScript函数。JavaScript函数sendMsgToIncrementCounter调用了Receiver小程序的incrementCounter方法。

<script>
    function sendMsgToIncrementCounter() {
        var myReceiver = document.getElementById("receiver");
        myReceiver.incrementCounter();
    } 
<script>

请注意,JavaScript代码使用receiver名称获取对网页上Receiver小程序的引用。此名称应与部署Receiver小程序时指定的id属性的值相同。

接下来显示Receiver小程序的incrementCounter方法。

public void incrementCounter() {
    ctr++;
    String text = "当前计数器的值:"
        + (new Integer(ctr)).toString();
    ctrLbl.setText(text);
}

按照以下代码片段在网页上部署小程序。您可以在AppletPage.html中查看Sender和Receiver小程序以及相关的JavaScript代码。

<!-- 发送方小程序 -->
<script src="https://www.java.com/js/deployJava.js"></script>
<script> 
    var attributes = { code:'Sender.class',
        archive:'examples/dist/applet_SenderReceiver/applet_SenderReceiver.jar',
        width:300, height:50} ;
    var parameters = { permissions:'sandbox' };
    deployJava.runApplet(attributes, parameters, '1.6');
</script>

<!-- 接收方小程序 -->
<script> 
    var attributes = { id:'receiver', code:'Receiver.class',
        archive:'examples/dist/applet_SenderReceiver/applet_SenderReceiver.jar',
        width:300, height:50} ;
    var parameters = { permissions:'sandbox' };
    deployJava.runApplet(attributes, parameters, '1.6');
</script>

下载源代码以进一步进行实验。


上一页:开发可拖动的小程序
下一页:使用服务器端应用程序工作