日期:2014-05-20  浏览次数:20614 次

刚学完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及其各个祖先类中,自然有调用到这个方法的地方
你去看看源代码就明白了