初学Java,现在用swing作第一个程序遇到一个问题,有一个JFrame和一个JPanel,先在JPanel的Graphics上画了个图像,然后我创建了n个线程(用Timer和TimerTask创建),每个线程随时对JPanel的Graphics绘自己的点的位置并且移动,现在的问题是如果窗口一直在前面没什么问题,如果最小化或挡住一部分后,再切换回来,一开始画的图像就被清掉了。
因为我的线程就是一些点,它们移动的时候绘图是使用XORMode的方式,将原先的位置清掉,这样比使用背景色画掉效果要好,不太闪烁,最小化或挡住一部分后,再切换回来对于这也是问题,因为切换后清空为背景,造成线程的下一次XORMode画点没有清掉原先的点,而是永久画在了上面。现在知道覆盖JPanel的paintComponent方法,在其中添加一开始的绘图代码可以,但是不能解决画点的问题,可不可以让它重绘的时候不清除背景(原先画的图像)呢?
覆盖update方法已经不起作用了,因为它根本就不会被调用。
因为我的线程就是一些点,它们移动的时候绘图是使用XORMode的方式,将原先的位置清掉,这样比使用背景色画掉效果要好,不太闪烁,最小化或挡住一部分后,再切换回来对于这也是问题,因为切换后清空为背景,造成线程的下一次XORMode画点没有清掉原先的点,而是永久画在了上面。现在知道覆盖JPanel的paintComponent方法,在其中添加一开始的绘图代码可以,但是不能解决画点的问题,可不可以让它重绘的时候不清除背景(原先画的图像)呢?
覆盖update方法已经不起作用了,因为它根本就不会被调用。
解决方案 »
- 5:不是语句?是什么意思?我把if判断句直接用三目运算符表达,怎么会出现错误呢?
- @@@@@@@@@@@@@@文件的读取
- 大家来听听俺自己开发的JavaEE入门核心理论,给个反馈。
- 关于父类的父类方法的调用
- 请教:编一个局域网内的聊天软件,要求用p2p协议,不很懂需求
- 求教;怎样将一个字符串中的每个字符按其ASCII值减3???我现在急用,望强者给我一个完整的方法,谢谢!
- 关于JTree控件的一些操作问题
- jbuilder10下如何添加Tomcat3.3.2 ?
- java新手问题 ,求各位大神帮助
- jdk的最新版本是多少?
- 我编译老说找不到javax.servlet.*
- 请问如何在一个xml文件里引入另外一个xml文件
你先绘制到一个BufferedImage上
JPanel的paint里则是把该缓冲绘制到屏幕上
即可解决问题