说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

同页applet间通信的问题

编辑:说三道四文库 发布时间:2018-08-19 08:04
HTML文档下载 WORD文档下载 PDF文档下载
在applet中我用 Applet d = getAppletContext().getApplet("app1")来获取同页中name是"app1"的applet,但是一运行就提示错误如下:
java.lang.NullPointerException

at java.applet.Applet.getAppletContext(Unknown Source)

at ex31.<init>(ex31.java:19)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

at java.lang.reflect.Constructor.newInstance(Unknown Source)

at java.lang.Class.newInstance0(Unknown Source)

at java.lang.Class.newInstance(Unknown Source)

at sun.applet.AppletPanel.createApplet(Unknown Source)

at sun.plugin.AppletViewer.createApplet(Unknown Source)

at sun.applet.AppletPanel.runLoader(Unknown Source)

at sun.applet.AppletPanel.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

但是那个applet是存在的,不知道是为什么?
可能执行Applet d = getAppletContext().getApplet("app1")时,app1还没有编译好~没有执行到~
1、在html中,要有name标签,如
<applet name="app1" code=app1 width=300 height=400></applet>

2、Applet d = getAppletContext().getApplet("app1")不要放在init中,最早在start中。
3、最好是
app1 d=(app1)getAppgetAppletContext().getApplet("app1");
一个是另一个的参数  但是好象不可以双向的,要不就绕道后台,用后台支持!
我看了楼主贴出的错误提示,可以看出问题所在:
1)java.lang.NullPointerException,表明是空引用。问题在于虽然你在代码中调用了
   getAppletContext().getApplet("app1")函数,但由于某些原因(比如app1尚未实例化),
   导致这个函数获取applet对象失败,即为空对象。
2)在同一个网页中嵌入多个Applet时,原则上可以相互获取各自的引用进而调用公共方法,
   但由于各Applet的代码大小可能差别很大,所以网络装载时间和实例化的进度将无法保证
   同时完成,即无法保证某个Applet通过getAppletContext().getApplet就一定能找到那个
   对象,所以推荐两种办法:
   A)办法一:
     用while循环,直到getAppletContext().getApplet返回的Applet
     对象非空后,再进行余下的操作。
      ......
      Applet app = null;
      while(app==null) {
        app = getAppletContext().getApplet("app1");
      }
      ......
   B)由于while循环太占用CPU资源,所以办法二:
     在applet的初始化函数中启动一个线程,专门用于检测
     getAppletContext().getApplet("app1")函数返回的applet对象是否为空,
     直到非空时退出线程,再进行下一步操作。

m
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘