我遇到了这段代码。我想在我在编程过程中遇到任何问题之前,我可以缓解这种困惑。我无法理解绘画或 actionPerformed 方法是否首先在 Board 类中执行。我希望我的 java 评论是正确的。
问题是,我在夏天学习了 Java 入门,而图形是在课程结束时才介绍的。该类使用了 ImageIcon,我们从未接触过 drawImage 方法和 Image 抽象类。我也完全不懂绘画方法。这段代码比我参加的 Java 图形讲座更复杂。基于 Java API,paint 方法源自 JPanel 的超类 JComponent 类。
那么paint方法所采用的这个参数Graphics g是什么,我应该如何考虑呢?paint 方法如何知道要绘制图形类的哪个对象。我查看了 Java API,它说 Graphics 是一个抽象类。如果 g 的数据类型是抽象的,它怎么可能是一个对象?我说 g 是一个对象,因为代码正在调用对象 g 的 drawImage 方法。
附带说明一下,重绘方法是否意味着擦除 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();
}
}