A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Frank_Ms1ZR 中级黑马   /  2016-7-26 22:22  /  407 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.awt.*;
import javax.swing.*;


public class FlyBall {
public static void main(String[] args) {
JFrame w = new JFrame();

w.setSize(300, 400);

MyJPanel mj = new MyJPanel();
w.add(mj);

Thread t = new Thread(mj);
t.start();

w.setVisible(true);

}
}


class MyJPanel extends JPanel implements Runnable{
int x=30;
int y=30;
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 30, 30);
}

public void run() {
while(true) {
y++;
if( y>400 ) {
y=0;
}
try{
Thread.sleep(40);
}catch(Exception e){}
repaint();
}
}
}


以上是代码, super.paint(g); 这条语句在代码中起到什么作用

3 个回复

倒序浏览
就是调用父类的paint()方法,做一些初始化的工作。
看一下下面的程序里就懂了:

class A
{
  void prn()
  {
     System.out.println("I am in the A.prn()");
  }
}

public class B extends A
{
   void prn()
   {
      super.prn();   //**
      System.out.println("I am in the A.prn");
   }
   
    public static void main(String[] args)
    {
       B b=new B();
       b.prn();
    }
}
-----------------------------------------------------------------------------
   在上面的代码中如果没有调用super.prn(),那么打印结果将只会显示"I am in the A.prn()",如果调用了将显示两条打印语句:
   I am in the A.prn()
   I am in the B.prn()

在你上面的代码中,调用的super.paint(g),是为了让父类办你做一些事前的工作,如刷新屏幕、重绘图像等等
回复 使用道具 举报
回复 使用道具 举报
6666666不错哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马