动画GIF触发组件(Java)?

动画GIF触发组件(Java)?,java,swing,jpanel,animated-gif,imageicon,Java,Swing,Jpanel,Animated Gif,Imageicon,在认真阅读SO的同时,我看到了许多通过经典在java中使用动画GIF的示例: JLabel mylabel=new JLabel(new ImageIcon("animated.gif")); 这很好,但是当我将mylabel添加到JPanel时,我注意到每次gif更改帧时都会调用JPanel的paintComponent方法 这真的有必要吗? gif不是孤立于JLabel吗 每次gif循环帧时,重新粉刷整个面板以及添加任何其他组件似乎是一种昂贵的时间浪费 如果你想知道我为什么关心这个问题

在认真阅读SO的同时,我看到了许多通过经典在java中使用动画GIF的示例:

  JLabel mylabel=new JLabel(new ImageIcon("animated.gif"));
这很好,但是当我将mylabel添加到JPanel时,我注意到每次gif更改帧时都会调用JPanel的paintComponent方法

这真的有必要吗? gif不是孤立于JLabel吗

每次gif循环帧时,重新粉刷整个面板以及添加任何其他组件似乎是一种昂贵的时间浪费

如果你想知道我为什么关心这个问题:通过做js/css网页设计,我学会了如何几乎完全避免回流,并将重绘隔离为只更改元素。在性能上创造了奇迹

这真的有必要吗

是:默认情况下JLabel不是不透明的,这就是为什么它的父级必须在标签更改后重新绘制自己。。如果您进行了更深入的探索:父对象仅重新绘制标签后面的区域,请参见片段

这真的有必要吗


是:默认情况下JLabel不是不透明的,这就是为什么它的父级必须在标签更改后重新绘制自己。。如果您进行了更深入的探索:家长只会重新绘制标签后面的区域,请参见剪辑

对性能产生了奇迹。调查这个问题有点像it.BTW-如果./表示当前目录/包,../表示父目录,那么…/是什么意思?然后注意到在代码中混乱时的行为。你是怎么注意到的?在GUI的呈现或IDE的调试器中?如果是前者,请确保它没有被调试器减慢。如果是后者,它支持我所说的-没有必要优化代码。如果你真的对学习Swing感兴趣,最好不要戴着你的网页设计帽子看它:-@kleopatra&andrewhompson。我真的很感谢你的建议和耐心。我现在明白了为什么我的各种问题没有给你留下特别深刻的印象。我有很多旧习惯需要改掉。我的表现非常出色。调查这个问题有点像it.BTW-如果./表示当前目录/包,../表示父目录,那么…/是什么意思?然后注意到在代码中混乱时的行为。你是怎么注意到的?在GUI的呈现或IDE的调试器中?如果是前者,请确保它没有被调试器减慢。如果是后者,它支持我所说的-没有必要优化代码。如果你真的对学习Swing感兴趣,最好不要戴着你的网页设计帽子看它:-@kleopatra&andrewhompson。我真的很感谢你的建议和耐心。我现在明白了为什么我的各种问题没有给你留下特别深刻的印象。我有很多旧习惯需要抛开。太棒了。我记不起在javadocs教程中读过这篇文章。虽然我可能有,但没有吸收。你怎么能在不查阅文档的情况下直接知道所有这些事情?你一定是某种……神谕:不,不。神谕回答了法老。是的,我想在paintComponentGraphics中加入println除了确认它被反复调用之外,并没有什么帮助。很吸引人。我记不起在javadocs教程中读过这篇文章。虽然我可能有,但没有吸收。你怎么能在不查阅文档的情况下直接知道所有这些事情?你一定是某种……神谕:不,不。神谕回答了法老。是的,我想在paintComponentGraphics中加入println除了确认它被反复调用之外,并没有什么帮助。