1

SOを通して宗教的に読んでいる間、クラシックを介してJavaでアニメーションGIFを使用する多くの例を見てきました。

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

これは正常に動作しますが、 mylabel を に追加すると、フレームが変更されるたびにJPanelJPanel のメソッドが呼び出されることに気付きました。paintComponentgif

それは本当に必要ですか?
gif は JLabel に分離されていませんか?

gif がフレームを循環するたびに、パネル全体 (およびパネルに追加されたその他のコンポーネント) を再描画するのは時間の無駄に思えます。

なぜ私が気にかけているのか不思議に思っているかもしれませんが、Web デザイン (js/css) を行うことで、リフローをほぼ完全に回避し、変更されている要素だけに再描画を分離する方法を学びました。驚異的なパフォーマンスを発揮しました。

4

1 に答える 1

4

それは本当に必要ですか?

はい: JLabel はデフォルトでは不透明ではありません。そのため、親はラベルの変更時に自分自身を再描画する必要があります..さらに深く調べた場合: 親はラベルの後ろの領域のみを再描画します (クリップを参照)

于 2012-10-08T08:19:39.110 に答える