4

すみません、これらの 3 つの関数 (ペイント、再ペイント、ペイント コンポーネント) がどのように相互作用するかを調べるためによく検索しますが、わかりません。それらがいつ呼び出されるかを正確に説明できますか(javaが私に尋ねずに呼び出すことがあるため)、それらが正確に何をし、それらの違いは何ですか。ありがとうございました

4

1 に答える 1

7

「ペイント」についてはよくわかりませんが、repaint() と paintComponent() の関係は説明できます。

Java に関する私の限られた経験では、paintComponent() メソッドは JPanel クラスのメソッドであり、「swing」のメンバーです。

paintComponent() メソッドは、すべての「描画」を処理します。基本的に、Graphic オブジェクトを使用して、必要なものを JPanel に描画します。

repaint() は、すべての JPanel オブジェクトの継承されたインスタンス メソッドです。[your_JPanel_object].repaint() を呼び出すと、paintComponent() メソッドが呼び出されます。

JPanel の外観を変更するたびに、repaint() を呼び出す必要があります。

特定のアクションは、repaint() メソッドを自動的に呼び出します。

  • ウィンドウのサイズ変更
  • ウィンドウの最小化と最大化

いくつか挙げると。

要するに、paintComponent() は、JPanel で定義されたメソッド、または JPanel を拡張する独自のカスタム クラスです。repaint() は別のクラス (JFrame など) で呼び出されるメソッドで、最終的に paintComponent() を呼び出します。

以下に例を示します。

    public class MyPanel extends JPanel{

    public void paintComponent(Graphics g){
        super.paintComponent(g);

        g.draw([whatever you want]);

        ...
        ...

    }
}
public class MyFrame extends JFrame{

    public MyFrame(){

    MyPanel myPanel = new MyPanel();

    myPanel.repaint();

    }

}
于 2013-06-01T18:14:50.260 に答える