14

これについてチュートリアルを試しましたが、まだよくわかりません。基本的に私の質問は、どの方法が優れているのか、そしてその理由は何ですか? またはを使用する必要がありますpaintpaintComponent

答えをシンプルに保つようにしてください、ありがとう。

4

2 に答える 2

17

paint()メソッドのドキュメントからの引用

このメソッドは、ペイントの作業を、3 つの保護されたメソッド (paintComponent、paintBorder、および paintChildren) に実際に委譲します。... UI (ルック アンド フィール) デリゲートの paint メソッドを特殊化するだけのサブクラスは、paintComponent をオーバーライドする必要があります。

paint()このメソッドは、境界線と子を含むコンポーネントを実際に描画しているように見えます。境界線と子を除いてコンポーネントの外観のみをカスタマイズする場合は、paintComponent().

http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#paint(java.awt.Graphics)

于 2013-02-27T03:39:03.150 に答える
10

一般的に言えば、Swing でペイントする場合はオーバーライドすることをお勧めしますpaintComponent

理由はいくつかあります。1 つはpaintComponent最下層にペイントされているため、ペイント プロセス中にレンダリングされたコンポーネントを誤って消去することはありません。これは、ここに投稿する人によく起こります。

をオーバーライドする必要がある場合はごくわずかですが、最初paintにそれを機能させることを常にお勧めしますpaintComponent

チェックアウト

于 2013-02-27T03:48:07.593 に答える