JPanelを拡張し、そのpaint()メソッドをオーバーライドするカスタムコンポーネントを作成しました。これで、コンポーネントが表示されているときに、このメソッドが10ミリ秒ごとに1回呼び出されることがわかります。コンポーネントに変更はありませんが、paint()は引き続き呼び出されます。repaint()を何度か呼び出していますが、実際にはどれも呼び出されていません。そのような頻繁な更新の原因を知る方法は?
更新!私のコードには「バグ」がありました。私はpaint()メソッドから内部コンポーネントを更新していたので、それが継続的な再ペイントの根本的な原因でした。しかし、それでも、質問には答えられていません。キューにイベントを提供するものを理解する方法は?
キューにイベントを提供するものを理解する方法は?
Swingコンポーネントのプロパティが変更されるたびに、コンポーネントは自動的repaint()
にそれ自体を呼び出します。ペイントリクエストはに渡されますRepaintManager
。
RepaintManager
その後、すべてのコンポーネントの一つの絵の中に、複数の再描画要求を集約します。統合は、ペイントをより効率的にするために行われます。
そのため、多くの場合、複数のコンポーネントが同時に再描画要求を行うため、要求を行った個々のコンポーネントは使用できません。
より詳細な説明については、AWTおよびSwingでのPaintingを読むことができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加