刚学完java基础,这段代码谁帮我答疑啊?
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class G1P1 extends JFrame{
//设置游戏屏幕参数
final int WIDTH = 900, HEIGHT = 650;
//通过构造方法设置JFrame
public G1P1(){
super("跑道!");
setSize(WIDTH/9*10,HEIGHT/9*10);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void paint(Graphics g){ /*这个地方不懂,为什么主方法没调用它,它却执行了?,而且
super.paint(g); paint(Graphics g)中的参数对象g在主方法中也没被实例化 */
g.setColor(Color.white);
g.fillRect(0, 0, WIDTH, HEIGHT);
g.setColor(Color.DARK_GRAY);
//现在绘制各矩形
g.fillRect(0,0,WIDTH/9,HEIGHT);
g.fillRect((WIDTH/9)*9,0,WIDTH/9,HEIGHT);
g.fillRect(0,0,WIDTH,HEIGHT/9);
g.fillRect(0,(HEIGHT/9)*9,(WIDTH/9)*10,HEIGHT/9);
g.fillRect((int)((WIDTH/9)*2.5),(int)((HEIGHT/9)*2.5),(int)((WIDTH/9)*5),(int)((HEIGHT/9)*4));
g.fillRect(WIDTH/2,(int)((HEIGHT/9)*7),WIDTH/10,HEIGHT/9);
g.fillRect(WIDTH/3,(int)((HEIGHT/9)*5),WIDTH/10,HEIGHT/4);
g.fillRect(2*(WIDTH/3),(int)((HEIGHT/9)*5),WIDTH/10,HEIGHT/4);
g.fillRect(WIDTH/3,HEIGHT/9,WIDTH/10,HEIGHT/9);
g.fillRect(WIDTH/2,(int)((HEIGHT/9)*1.5),WIDTH/30,HEIGHT/4);
}
public static void main(String[] args){
new G1P1();
}
}
------解决方案--------------------
public void paint(Graphics g)
这是JFrame的祖先类Component类中定义的方法
你在这里等于是重写了该方法
在JFrame及其各个祖先类中,自然有调用到这个方法的地方
你去看看源代码就明白了