在虔诚地阅读 SO 时,我看到了许多通过经典在 Java 中使用动画 gif 的示例:
JLabel mylabel=new JLabel(new ImageIcon("animated.gif"));
效果很好,但是当我将 mylabel 添加到 JPanel
时,我注意到每次 gif
时都会调用 JPanel 的 paintComponent
方法改变框架。
真的有必要吗?
gif 不是与 JLabel 隔离的吗?
每次 gif 循环帧时重新绘制整个面板(以及添加到其中的任何其他组件)似乎是一种昂贵的时间浪费。
如果您想知道我为什么关心:从网页设计 (js/css) 中,我学会了如何几乎完全避免重排并将重绘隔离到仅被更改的元素。为性能创造奇迹。
最佳答案
Is that really necessary?
是的:默认情况下,JLabel 不是不透明的,这就是为什么它的父级必须在标签发生变化时重新绘制自身的原因。如果您进行了更深入的探索:父级仅 重新绘制标签后面的区域(见剪辑)
关于java - 动画 Gif 触发 paintComponent (Java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12776969/