23

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

これが検索機能を使用して解決できる質問だと思われる場合は申し訳ありませんが、何らかの理由で解決できません。

4

3 に答える 3

24

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

ペイント():

このメソッドは、このコンポーネントを描画するための命令を保持します。実際、Swing では、paint が paintBorder()、paintComponent()、および paintChildren() を呼び出すため、paint() の代わりに paintComponent() を変更する必要があります。このメソッドを直接呼び出すべきではありません。代わりに repaint() を呼び出す必要があります。

再描画 ():

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

于 2012-05-26T18:13:27.743 に答える
5

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

このrepaint()メソッドはpaint()、AWT 描画スレッドによって呼び出されるようにするために使用されます。

于 2012-09-09T14:16:13.030 に答える
0

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

于 2012-05-26T18:12:30.320 に答える