web-dev-qa-db-ja.com

paint()およびrepaint()Java

これらのメソッドとGraphicsクラスをブラウジングして読んで、最後の2時間を費やしたことがあるかもしれません。それらは何のため?画面上のコンポーネントを再描画または更新すると想定されていることは理解していますが、なぜこれが必要なのか理解できませんでした(私はこれが初めてです)。たとえば、JLabelを画面上で移動している場合、setLocation()を呼び出すとそれがうまく移動します。それはrepaint()が必要ないシナリオですか?どのシナリオで役立ちますか、そしてその理由は何ですか?

これが検索機能を使用して解決できる質問であると感じた場合はおologiesび申し上げますが、何らかの理由で取得できません。

19
Daniel

Paint()メソッドとRepaint()メソッドの違い

ペイント():

このメソッドは、このコンポーネントをペイントするための指示を保持します。実際、Swingでは、PaintはpaintBorder()、paintComponent()、およびpaintChildren()を呼び出すため、Paint()ではなくpaintComponent()を変更する必要があります。このメソッドを直接呼び出すのではなく、代わりにrepaint()を呼び出す必要があります。

Repaint():

このメソッドはオーバーライドできません。 update()-> Paint()サイクルを制御します。コンポーネントを再描画するには、このメソッドを呼び出す必要があります。コンポーネントの外観を変更するために何かを行ったが、サイズを変更しなかった場合(色の変更、アニメーション化など)、このメソッドを呼び出します。

21
Siva Charan

Paint()メソッドは、Graphicsオブジェクトを介したペイントをサポートします。

repaint()メソッドは、Paint()をAWTペイントスレッドによって呼び出させるために使用されます。

4

コンポーネントに特定の何かをレンダリングする必要がない限り、repaintを呼び出す必要はありません。 「特定のもの」とは、使用しているウィンドウツールキットによって内部的に提供されていないものを意味します。

0
blend