动画Gifs触发paintComponent(Java)?

时间:2012-10-08 07:16:12

标签: java swing jpanel animated-gif imageicon

在通过SO虔诚地阅读时,我已经看到很多通过经典在java中使用GIF动画的例子:

  JLabel mylabel=new JLabel(new ImageIcon("animated.gif"));

哪个工作正常但是当我将mylabel添加到JPanel时,我注意到每次paintComponent更改帧时都会调用JPanel的gif方法。

这真的有必要吗?   是不是将GIF隔离到JLabel?

每次gif循环帧时,重新绘制整个面板(以及添加到其中的任何其他组件)似乎都是浪费时间的浪费。

如果你想知道我为什么关心:从做网页设计(js / css),我学会了如何几乎完全避免回流,并将重绘只隔离到被改变的元素。为表现创造了奇迹。

1 个答案:

答案 0 :(得分:4)

  

这真的有必要吗?

是的:默认情况下JLabel不是不透明的,这就是为什么它的父必须在标签的更改后重新展示自己的原因..如果你已经深入探索了:只有父 < / em>重新绘制标签后面的区域(参见剪辑)