问题描述
- 请问大神们Java里的JPanel.repaint和JFrame.repaint的区别是什么?
-
Java小白一个,在看headfirst JAVA,书上有一个小的动画代码,是每个几秒画一个圆
然后圆的位置不断变化,书上故意用了JPanel.repaint这个方法,结果产生了运动痕迹,
然后书上提出的解决方法是repaint的时候先画一个大的白色的正方形把原来的圆盖住,
然后才画下一个圆。我实践的时候突发奇想用了JFrame.repaint来代替这个
JPanel.repaint,结果发现不用像书上那样也可以消除运动轨迹。那么问题就来了:
JFrame.repaint和JPanel.repaint这两个方法有什么不同呢?为什么一个可以消除痕迹一个不可以呢?JFrame.repaint做动画方面是不是更好呢?或者说什么时候不可以用它呢?
谢谢!
解决方案
从JDK源码上看,JFrame和JPanel的repaint方法是同一个,都是继承自JComponent的,对该方法的调用执行的都是同样的代码的。
不同的就是传入的参数差异而已。
时间: 2024-08-01 14:16:24