Redian新闻
>
这个应该是java本身的错误吧?
avatar
这个应该是java本身的错误吧?# Java - 爪哇娇娃
b*i
1
一个控制定自定义的SplashWindow的类,定了一个timer.schedule(task, 0, 100);其
中 task=new TimerTask(){.....run(){splashWindow.repaint();},
关闭窗口的时候timer.cancel();然后通过invokeLater调用splashWindow.dispose();
splashWindow=null等,希望gc来析构变量。
splashWindow是属于 private class SplashWindow extends JFrame{
其中构造函数初始化了 canvas= new BufferedImage(....);
}
还有public void paint(Graphics graphics){
if (fImage != null && running) {
Graphics2D g=canvas.createGraphics();
g.drawImage(base, 0, 0, this);
g.drawImage(bf, 0, 0, this);
----〉 graphics.drawImage(canvas, 0, 0, this);
}
}
标记的那一行出了NullPointerException。这是在运行了120多次的时候出现的,应该
就是程序关闭自己定义的SplashWindow这个窗口的时候。
难道变量都null了,该gc来清除了,(timer虽然取消了,但是队列里面可能还有一个,
或者系统还有一个repaint的消息), 窗口发生dispose了,这个时候paint还会被调用?
当然,我可以增加一个变量让paint直接返回。 我想知道这是不是java的问题?还是一
个变量被gc清除的时候,仍然会发生paint?还是我不应该InvokeLater?应该
invokeAndWait?
avatar
c*e
2
到stackoverflow上去问。

;

【在 b***i 的大作中提到】
: 一个控制定自定义的SplashWindow的类,定了一个timer.schedule(task, 0, 100);其
: 中 task=new TimerTask(){.....run(){splashWindow.repaint();},
: 关闭窗口的时候timer.cancel();然后通过invokeLater调用splashWindow.dispose();
: splashWindow=null等,希望gc来析构变量。
: splashWindow是属于 private class SplashWindow extends JFrame{
: 其中构造函数初始化了 canvas= new BufferedImage(....);
: }
: 还有public void paint(Graphics graphics){
: if (fImage != null && running) {
: Graphics2D g=canvas.createGraphics();

avatar
b*i
3
最后发现是我的错误/

【在 c*********e 的大作中提到】
: 到stackoverflow上去问。
:
: ;

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。