1. 同一网页内的Applet的通讯
        Applet类中可以取得上下文的句柄,所以同一网页内的Applet是可以通讯的。
        例如:同一页面(test.html)中存在Applet1和Applet2。Applet1欲调用Applet2的方法。在Applet1类需要调用Applet2的地方,添加这样一条语句:Applet2 applet2 = (Applet2)getAppletContext().getApplet("Applet2")即可。判断Applet2的实例applet2是否存在,如果存在即可调用它的方法。编译时要先编译Applet2。在test.html对Applet2的声明中,一定要注意声明Applet2的name=“Applet2”
2. Applet跨框架和浏览器窗口彼此通信
        java.applet包中的AppletContext类中包含下面两个成员方法:getApplet();getApplets()。通过这两个方法实现applet之间的通讯。但是,调用这两个方法必须满足以下两个条件: 这些applet来自同一服务器的同一目录下;这些applet运行于同一浏览器窗口的同一页面中。但是,applet间跨页面通讯的方法基于下面事实:如果两个applet的codebase相同,即使它们在不同的窗口中,它们也共享同一运行环境。Codebase就是加载applet的路径。因为运行环境是共享的,所以所有applet实例都可以访问静态域和静态结构,这样就可以利用这些静态域和静态结构实现Applet跨框架和浏览器窗口彼此通信。
       可以用下面两种方法具体实现:
        ⑴在Applet2.init()中定义指向自己的引用,在Applet1中声明Applet2后调用该引用即可;
        ⑵更通用的方法是,创建一个类似hashtable的类,用来在静态数据结构中存储applet的引用。在Applet2.start()中将当前实例插入这个通用类中。在Applet2.stop()中将此实例撤销。而Applet1欲对Applet2调用时,只要在通用类中通过key查找某实例是否存在即可。

解决方案 »

  1.   

    在applet1的按钮事件内,直接调用applet2.init( );
      

  2.   

    applet是内嵌的,如果打开包含applet页面,xxx.getAppletContext().showDocument(url,"_blank"|"_self");如果applet包含在frame里,Frame frame=new Frame();
    frame.setLayout(new BorderLayout());
    frame.add(xxx);
    frame.show();
      

  3.   

    为什么还是没有一个可行的方案呢,打开一个Dialog也不行吗???
      

  4.   

    你看看这个程序!import javax.swing.*;
    import javax.swing.tree.TreePath;
    import javax.swing.tree.TreeNode;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.tree.*;
    import java.applet.AppletContext;
    import java.net.URL;
    import java.applet.Applet;
    import java.net.MalformedURLException;public class MyApplet extends JApplet{


    public void init(){

    TreeModel tm = makeTree();
    JTree mytree = new JTree(tm);
    getContentPane().add(new JScrollPane(mytree));

    mytree.addMouseListener(new MouseAdapter(){

    public void mousePressed(MouseEvent e){
    URL url = null;
    URL fullurl = null;
    url = getDocumentBase();
    JTree t = (JTree)e.getSource();
    int row = t.getRowForLocation(e.getX(),e.getY());
    AppletContext ac = getAppletContext();
    if(row != -1){

    TreePath path = t.getPathForRow(row);
    TreeNode node = (TreeNode)path.getLastPathComponent();

    if((node.toString()).equals("数控车削中心")){
    try{
    fullurl = new URL(url,"jiagzx.jsp");
    }catch(MalformedURLException ev)
    {
    showStatus("Error"+e.toString());
    }
    ac.showDocument(fullurl,"rightframe");
    }
    else if((node.toString()).equals("生产现场一")){
    try{
    fullurl = new URL(url,"1.htm");
    }catch(MalformedURLException ev)
    {
    showStatus("Error"+e.toString());
    }
    ac.showDocument(fullurl,"rightframe");
    }
    else{
    try{
    fullurl = new URL(url,"daijianshe.jsp");
    }catch(MalformedURLException ev){
    showStatus("Error"+e.toString());
    }
    ac.showDocument(fullurl,"rightframe");
    }
    }
    }
    });

    }


    protected static TreeModel makeTree(){
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("基于Web的监控系统");
    DefaultMutableTreeNode parent;
    //一车间节点图
    parent = new DefaultMutableTreeNode("生产现场一");
    root.add(parent);

    parent.add(new DefaultMutableTreeNode("数控车床"));
    parent.add(new DefaultMutableTreeNode("数控专用铣床"));
    parent.add(new DefaultMutableTreeNode("数控升降台铣床"));
    parent.add(new DefaultMutableTreeNode("龙门加工中心"));
    parent.add(new DefaultMutableTreeNode("立式钻床"));
    parent.add(new DefaultMutableTreeNode("数控车削中心"));
    //二车间节点图
    parent = new DefaultMutableTreeNode("生产现场二");
    root.add(parent);

    parent.add(new DefaultMutableTreeNode("数控车床"));
    parent.add(new DefaultMutableTreeNode("数控专用铣床"));
    parent.add(new DefaultMutableTreeNode("数控升降台铣床"));
    parent.add(new DefaultMutableTreeNode("龙门加工中心"));
    parent.add(new DefaultMutableTreeNode("立式钻床"));
    parent.add(new DefaultMutableTreeNode("数控车削中心"));
    //三车间节点图
    parent = new DefaultMutableTreeNode("生产现场三");
    root.add(parent);

    parent.add(new DefaultMutableTreeNode("数控车床"));
    parent.add(new DefaultMutableTreeNode("数控专用铣床"));
    parent.add(new DefaultMutableTreeNode("数控升降台铣床"));
    parent.add(new DefaultMutableTreeNode("龙门加工中心"));
    parent.add(new DefaultMutableTreeNode("立式钻床"));
    parent.add(new DefaultMutableTreeNode("数控车削中心"));
    //四车间节点图
    parent = new DefaultMutableTreeNode("生产现场四");
    root.add(parent);

    parent.add(new DefaultMutableTreeNode("数控车床"));
    parent.add(new DefaultMutableTreeNode("数控专用铣床"));
    parent.add(new DefaultMutableTreeNode("数控升降台铣床"));
    parent.add(new DefaultMutableTreeNode("龙门加工中心"));
    parent.add(new DefaultMutableTreeNode("立式钻床"));
    parent.add(new DefaultMutableTreeNode("数控车削中心"));

    return new DefaultTreeModel(root);
    }
    }可要给分哦!:)