*两个遇墙反弹的球:通过线程来改变球的位置参数,从而通过repaint()来重画两个球的位置。

*/
import java.awt.*;
import javax.swing.*;
public class FanTanQiu extends JFrame{
FanTanQiu(){
this.setSize(300,400);
int width=(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
int height=(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
int x=(width-300)/2;
int y=(height-400)/2;
this.setLocation(x, y);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]){
FanTanQiu ftq=new FanTanQiu();
MyBall mb=new MyBall();
mb.setBackground(Color.orange);
ftq.add(mb);
Thread t=new Thread(mb);
t.start();
ftq.show();
}
}
class MyBall extends Panel implements Runnable{
int x=20;
int y=20;
int f=0;
public void paint(Graphics g){
g.setColor(Color.green);
g.fillOval(x, y, 20, 20);
g.fillOval(x+40, y, 20, 20);
}
public void run(){
while(true){
if(f==0){
x++;
y++;
if(x>272)f=1;
if(y>347)f=3;
}
if(f==1){
x--;
y++;
if(x<0)f=0;
if(y>347)f=2;
}
if(f==2){
x--;
y--;
if(x<0)f=3;
if(y<0)f=1;
}
if(f==3){
x++;
y--;
if(x>272)f=2;
if(y<0)f=0;
}
try {
Thread.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
repaint();
}
}
}