部分程序如下:
public void init(){
try {
jsObject=JSObject.getWindow (this);

}
catch (Exception ex) {
ex.printStackTrace();
}
jsObject.eval("javascript:alert('1')");

public void run() {
while (true) {
try {
Thread.sleep(5000);
jsObject.eval("javascript:alert('2')");
}
catch (InterruptedException e){}
}
}
applet和多线程启动后,在页面上只有第一个alert显示出来了,多线程函数中的javascritp没有执行

解决方案 »

  1.   

    定时器代码如下:
    public class SerialApplet extends Applet {//implements Runnable
    private static int timeout=5000;
    //private Thread cardProcess=null;
    private CardReader cardReader=null;
    private JSObject jsObject=null;
    private String pageState;
    private String cardState;
    private Timer timer;
    public void init(){
    setLayout(new FlowLayout()); 
    try {
    jsObject=JSObject.getWindow (this);
    }
    catch (Exception ex) {
    ex.printStackTrace();
    }
    jsObject.eval("javascript:alert('2')");
    if (cardReader==null) {
    cardReader=new CardReader();
    cardReader.cardInit();
    }
    if (timer==null) {
    timer=new Timer(timeout,new ActionListener(){public void actionPerformed(ActionEvent e) {
    jsObject.eval("javascript:alert('3')");
    }});

    }

    public void start() {
    timer.start();
    }
    }调用applet的jsp部分代码如下:
    <applet codebase="." code="org.eleit.serial.SerialApplet.class" width="0" height="0" MAYSCRIPT>
    </applet>