第一:
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个矩形(rect
和rect2
)。
任何人都可以使用此示例来帮助我理解run()
和init()
的使用以及为什么我在使用run()
时会有不同的结果?