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