这些Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言变化以了解Java SE 9及后续版本中的更新语言特性的摘要。
请参阅JDK发布说明以获取有关所有JDK版本的新功能、增强功能以及删除或弃用选项的信息。
Java applet可以通过在父网页中使用JavaScript函数与其他Java applet进行通信。JavaScript函数通过接收来自一个applet的消息并调用其他applet的方法来实现applet之间的通信。有关Java代码和JavaScript代码之间交互的更多信息,请参阅以下主题:
您应该避免使用以下机制来查找其他applet并在applet之间共享数据:
AppletContext
类的getApplet
和getApplets
方法来查找其他applet。这些方法只能找到在相同的Java Runtime Environment软件实例中运行的applet。Applet必须来自服务器上的同一目录才能相互通信。
下面显示了Sender和Receiver applet。当用户点击按钮以增加计数器时,Sender applet调用JavaScript函数向Receiver applet发送请求。接收到请求后,Receiver applet增加一个计数器变量并显示变量的值。
Sender Applet
Receiver Applet
要启用与另一个小程序的通信,需要获取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>
下载源代码以进一步进行实验。