package itat;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Example9_11 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyFrame mf=new MyFrame();
mf.setBounds(10,10,500,500);
mf.setVisible(true);
mf.setTitle("模拟自由落体和平抛运动");
mf.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
class MyFrame extends Frame implements Runnable{
Thread redOval, blueOval;
MyCanvas red,blue;
double t=0;
MyFrame(){
redOval=new Thread(this);
blueOval=new Thread(this);
red=new MyCanvas(Color.red);
blue=new MyCanvas(Color.blue);
this.setLayout(null);
this.add(red);
this.add(blue);
red.setLocation(60,100);//将组件移到新位置。通过此组件父级坐标空间中的 x 和 y 参数来指定新位置的左上角。
blue.setLocation(60,100);
redOval.start();
blueOval.start();
}
public void run() {
// TODO Auto-generated method stub
while(true){
t=t+0.2;
if(t>20)t=0;
if(Thread.currentThread()==redOval){
int x=60;
int h=(int)(1.0/2*t*t*3.8)+60;
red.setLocation(x,h);
try {
redOval.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(Thread.currentThread()==blueOval){
int x=60+(int)(26*t);
int h=(int)(1.0/2*t*t*3.8)+60;
blue.setLocation(x,h);
try {
blueOval.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
class MyCanvas extends Canvas{
Color c;
MyCanvas(Color c){
this.setSize(20,20);
this.c=c;
}
public void paint(Graphics g){
g.setColor(c);
g.fillOval(0,0,20, 20);
}
}