为什么我在两个类中使用run()方法得到不同的结果?

时间:2015-05-31 22:09:20

标签: java init

第一:

import acm.graphics.GRect;
import acm.program.GraphicsProgram;

public class GraphTest extends GraphicsProgram{
public void run(){
    GRect a= new GRect(50, 50);
    add(a,50,50);
}
}
  

这将在屏幕上显示一个矩形。

第二

public class MyProg extends Program{
public void run(){
    MyCanvas canvas = new MyCanvas();
    add(canvas);
}
}

import java.awt.event.*;
import acm.graphics.*;

public class MyCanvas extends GCanvas implements ComponentListener{
private GRect rect;
private static final double BOX_WIDTH = 50;
private static final double BOX_HEIGHT= 50;
public MyCanvas(){
    addComponentListener(this);
    rect = new GRect(BOX_WIDTH, BOX_HEIGHT);
    rect.setFilled(false);
    add(rect,10,10);
}
public void update(){
    GRect rect2 = new GRect(0.1*getWidth(), 0.1*getHeight());
    add(rect2,(getWidth()-BOX_WIDTH)/2,(getHeight()-BOX_HEIGHT)/2);
}
public void componentResized(ComponentEvent e){update();}
public void componentHidden(ComponentEvent e){}
public void componentMoved(ComponentEvent e){}
public void componentShown(ComponentEvent e){}
}
  

这应该向我展示一个矩形,但事实并非如此。如果我使用init(),则实际显示2个矩形(rectrect2)。

任何人都可以使用此示例来帮助我理解run()init()的使用以及为什么我在使用run()时会有不同的结果?

0 个答案:

没有答案