在applet中,如果我要缓存控件对象的数据,如JTextField,我把控件对象声明为static的,当第一次载入时,你填数据进去,如aaa,这时候,我如果刷新页面,applet将重新载入,而JTextField就没法得到光标,它的键盘事件都不能用了,但鼠标事件还能用。而且这个静态的JTextField对象的hashcode还是一样的.请问这是什么原因,如何解决?

解决方案 »

  1.   

    通常在IE中,启动JVM后会在托盘上有个JVM的图标,所有的static对象都被保存在JVM中,即使applet被销毁也一直存在,除非JVM退出重新启动,这就是原因
      

  2.   

    当然解决方案之一就是尽量不要使用static成员
      

  3.   

    谢谢楼上的答复,可是我要的JTextField中的值保存下来,有没有什么解决办法?请指教!
      

  4.   

    这个不使缓存的问题吧, JTextField加入到applet中的时候,应该有某个语句吧?
    如add(JTextField);
    而这个语句不在你的applet的init方法中吧?所以虽然JTextField 的hashcode还是一样的,但是这种初期设定的语句没有调用的话,是不行的。
    把add(JTextField);这些语句放在applet的init方法或者start方法中试一下。
      

  5.   

    不行了,重新removeAll()后再重新add后文本框仍然是不能动,不能输入了
      

  6.   

    保存值的方法有很多,将JTextField加上static修饰不是好的做法啊
      

  7.   

    JTextField.getText()不能得到里面的内容吗?
      

  8.   

    不是不能得到,是可以得到,但是这个JTextField控件却不能用了