请教大家:关于callback的问题(附代码)
大家好,我初学java,现在在看一个辅导班的视频,今天讲到要写一个飞机游戏的小程序,刚开始老师让我们先熟悉一下界面相关的类,于是跟着老师敲了下面一段代码,内容是:1,定义一个继承Frame的GameFrame类
2,GameFrame类里面有lauchFrame和paint两个方法(方法内容都是很小白的,就是看看都有啥功能而已)。
3,顺便写了main方法,新建一个GameFrame对象然后调用lauchFrame方法。
我现在不理解的是:为什么明明只调用了lauchFrame方法,但是paint方法竟然也运行了呢?老师在视频里说是关于回调(callback)的,我把之前他关于回调的视频看了,也上网查了资料,但是如果有回调的话,lauchFrame里面是不是应该有关于paint方法的内容才可以?而代码里完全没有。所以一直不能理解,烦请大家多多指教。谢谢!
代码如下:
package cn.bjsxt.test;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class GameFrame extends Frame{ //GUI编程:AWT,swing等。
public void launchFrame(){
setSize(500,500);
setLocation(100,100);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
@Override
public void paint(Graphics g) {
g.drawLine(100, 100, 200, 200);
g.drawRect(100, 100, 200, 200);
g.drawOval(100, 100, 200, 200);
Font f=new Font("宋体",Font.BOLD,100);
g.setFont(f);
g.drawString("This is a Test", 200, 200);
g.fillRect(100, 100, 20, 20);
Color c=g.getColor();
g.setColor(Color.red);
g.fillOval(300, 300, 20, 20);
g.setColor(c);
}
public static void main(String[] args) {
GameFrame gf=new GameFrame();
gf.launchFrame();
}
}