一个缓存的问题,applet绝顶高手或面向对象高手请帮忙,高分求教!
在applet中,如果我要缓存控件对象的数据,如JTextField,我把控件对象声明为static的,当第一次载入时,你填数据进去,如aaa,这时候,我如果刷新页面,applet将重新载入,而JTextField就没法得到光标,它的键盘事件都不能用了,但鼠标事件还能用。而且这个静态的JTextField对象的hashcode还是一样的.请问这是什么原因,如何解决? 问题点数:50、回复次数:11Top
1 楼pxboy(阿土仔)回复于 2005-08-03 11:49:36 得分 0
通常在IE中,启动JVM后会在托盘上有个JVM的图标,所有的static对象都被保存在JVM中,即使applet被销毁也一直存在,除非JVM退出重新启动,这就是原因Top
2 楼pxboy(阿土仔)回复于 2005-08-03 11:52:10 得分 0
当然解决方案之一就是尽量不要使用static成员Top
3 楼stan001140(李明)回复于 2005-08-03 12:18:24 得分 0
谢谢楼上的答复,可是我要的JTextField中的值保存下来,有没有什么解决办法?请指教!Top
4 楼kindani(kindani)回复于 2005-08-03 12:21:02 得分 0
这个不使缓存的问题吧, JTextField加入到applet中的时候,应该有某个语句吧?
如add(JTextField);
而这个语句不在你的applet的init方法中吧?
所以虽然JTextField 的hashcode还是一样的,但是这种初期设定的语句没有调用的话,是不行的。
把add(JTextField);这些语句放在applet的init方法或者start方法中试一下。Top
5 楼stan001140(李明)回复于 2005-08-03 12:24:07 得分 0
不行了,重新removeAll()后再重新add后文本框仍然是不能动,不能输入了Top
6 楼pxboy(阿土仔)回复于 2005-08-03 12:58:37 得分 0
保存值的方法有很多,将JTextField加上static修饰不是好的做法啊Top
7 楼stan001140(李明)回复于 2005-08-03 13:03:36 得分 0
这个我明白,但是我程序已经是这样做了,要改起来就麻烦了,当初设计的时候没有考虑到会有这种情况,难道就没有其它解决办法了吗?Top
8 楼stan001140(李明)回复于 2005-08-03 13:35:15 得分 0
高手在哪里?请指教啊!Top
9 楼stan001140(李明)回复于 2005-08-03 14:50:19 得分 0
怎么还没有人过来帮帮忙啊Top
10 楼luic2002(luic)回复于 2005-08-24 22:14:03 得分 0
JTextField.getText()不能得到里面的内容吗?Top
11 楼stan001140(李明)回复于 2005-08-25 21:24:24 得分 0
不是不能得到,是可以得到,但是这个JTextField控件却不能用了Top




