初学Java,现在用swing作第一个程序遇到一个问题,有一个JFrame和一个JPanel,先在JPanel的Graphics上画了个图像,然后我创建了n个线程(用Timer和TimerTask创建),每个线程随时对JPanel的Graphics绘自己的点的位置并且移动,现在的问题是如果窗口一直在前面没什么问题,如果最小化或挡住一部分后,再切换回来,一开始画的图像就被清掉了。
因为我的线程就是一些点,它们移动的时候绘图是使用XORMode的方式,将原先的位置清掉,这样比使用背景色画掉效果要好,不太闪烁,最小化或挡住一部分后,再切换回来对于这也是问题,因为切换后清空为背景,造成线程的下一次XORMode画点没有清掉原先的点,而是永久画在了上面。现在知道覆盖JPanel的paintComponent方法,在其中添加一开始的绘图代码可以,但是不能解决画点的问题,可不可以让它重绘的时候不清除背景(原先画的图像)呢?
覆盖update方法已经不起作用了,因为它根本就不会被调用。