在认真阅读SO的过程中,我看到了许多通过经典的java使用动画gif的例子:
JLabel mylabel=new JLabel(new ImageIcon("animated.gif"));这很好用,但当我将我的mylabel添加到JPanel中时,我注意到每次gif更改帧时都会调用JPanel的paintComponent方法。
这真的有必要吗?
gif不是与JLabel隔离的吗?
每次gif循环帧时,重新绘制整个面板(以及添加到其中的任何其他组件)似乎是一种昂贵的时间浪费。
如果你想知道我为什么关心这个:从做网页设计(js/css)开始,我学会了如何几乎完全避免回流,并将重绘隔离到仅更改的元素。在性能上创造了奇迹。
发布于 2012-10-08 16:19:39
真的有必要吗?
是: JLabel在默认情况下不是不透明的,这就是为什么它的父级必须在标签更改后重新绘制自己的原因。如果你研究得更深入一些:父对象只重画标签后面的区域(参见片段)
https://stackoverflow.com/questions/12776969
复制相似问题