同网页内两个Applet通信
2008-01-05 17:58:22 来源:WEB开发网核心提示:程序代码:Applet1.java 源码import java.awt.*;import java.awt.event.*;import java.applet.*;public class Applet1 extends Applet{TextField tf = new TextField("Applet
程序代码:
Applet1.java 源码
------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Applet1 extends Applet
{
TextField tf = new TextField("Applet2,你能收到吗?",20); // 定义文本框
Button b = new Button("发送到Applet2"); // 发送按钮
public void init()
{
setLayout(new FlowLayout()); // 设置布局治理器为FlowLayout
add(tf);
add(b);
}
public boolean action(Event ev, Object obj) // 处理按钮事件
{
if(ev.target instanceof Button) // 假如事件是从按钮来的
{
String msg = tf.getText();
Applet2 applet2 = (Applet2)getAppletContext().getApplet("Applet2");
if(applet2 != null) // 取Applet2的句柄
{
applet2.AppendText(msg); // 调用applet2中的函数
return true;
}
else
{
tf.setText("没有找到Applet2");
return false;
}
}
return false;
}
}
=================================================
Applet2.java 源码
-------------------------------------------------
import java.applet.Applet;
import java.awt.*;
public class Applet2 extends Applet
{
TextField text = new TextField("",30);
public void init()
{
setLayout(new FlowLayout());
add(text);
}
public void AppendText(String msg) // <<--- 声明为公开方法以便applet1调用
{
text.setText("我收到了!是\""+msg+"\"");
}
}
说明:Applet类中可以取得网页的上下文句柄,因此,同网页内的两个Applet是可以互相访问到的,在本例中注重Applet2的HTLM代码一定要加上name="Applet2",否则无法取得Applet2得句柄.编译的时候先编译Applet2,这样Applet1中才能引用Applet2这个类.JB下例子通不过,需要在IE中执行.
赞助商链接