私はこのコードに出くわしました。プログラミングの途中で問題が発生する前に、この混乱を緩和できると思いました。ペイントまたはactionPerformedメソッドがBoardクラスで最初に実行されるかどうかを理解するのに問題があります。私のJavaコメントが正しく記述されていることを願っています。
実は、私は夏にJavaの紹介をしましたが、グラフィックはコースの終わりにしか紹介されませんでした。クラスはImageIconを使用し、drawImageメソッドとImage抽象クラスには触れませんでした。塗装方法も全くわかりません。このコードは、私が行ったJavaグラフィックスの講義よりも複雑です。Java APIに基づいて、paintメソッドはJPanelのスーパークラスであるJComponentクラスから発生しました。
では、paintメソッドが取り込むこのパラメータGraphics gとは何であり、どのように考える必要がありますか?paintメソッドは、どのようにしてグラフィックスクラスのどのオブジェクトをペイントするかを認識します。Java APIを調べたところ、Graphicsは抽象クラスであると書かれています。データ型が抽象である場合、gはどのようにオブジェクトになることができますか?コードがオブジェクトgのdrawImageメソッドを呼び出しているため、gはオブジェクトであると言っています。
ちなみに、再描画方法とは、JPanelのコンテンツを消去し、レンダリングのようにコンポーネント全体を再描画することを意味しますか?
public class Board extends JPanel implements ActionListener{
private Image apple;
private int apple_x;
private int apple_y;
// over-riding the paint method from the JComponent Class
public void paint(Graphics g){
// recursively call the paint method
super.paint(g);
g.drawImage(apple, apple_x, apple_y, this);
}
// does this method gets called first or the top one?
public void actionPerformed(ActionEvent e) {
repaint();
}
}