java三个球的运动_一个用JAVA编写的多线程小球运动的东西

/*

* Created on 2005-3-20

*

* TODO To change the template for this generated file go to

* Window - Preferences - Java - Code Style - Code Templates

*/

/**

* @author pingping

*

* TODO To change the template for this generated type comment go to

* Window - Preferences - Java - Code Style - Code Templates

*/

import java.util.*;

import java.awt.*;

import java.awt.event.*;

import java.awt.geom.*;

import javax.swing.*;

public class Bounce {

public static void main(String[] args)

{

JFrame frame = new BounceFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

}

class BounceFrame extends JFrame

{

public BounceFrame()

{

setTitle("Bounce...");

setSize(400,450);

canvas = new BallCanvas();

Container contain = getContentPane();

contain.add(canvas,BorderLayout.CENTER);

JPanel buttonpanel = new JPanel();

addButton(buttonpanel,"start",new ActionListener()

{

public void actionPerformed(ActionEvent event)

{

addBall(Thread.NORM_PRIORITY,Color.black);

}

});

addButton(buttonpanel,"express",new ActionListener()

{

public void actionPerformed(ActionEvent event)

{

addBall(Thread.NORM_PRIORITY+2,Color.red);

}

});

/*addButton(buttonpanel,"selfish",new ActionListener()

{

public void actionPerformed(ActionEvent event)

{

addBall(Thread.NORM_PRIORITY+2,Color.red);

}

});*/

addButton(buttonpanel,"stop",new ActionListener()

{

public void actionPerformed(ActionEvent event)

{

System.exit(0);

}

});

contain.add(buttonpanel,BorderLayout.SOUTH);

}

public void addButton(Container c,String name,ActionListener listener)

{

JButton button = new JButton(name);

button.addActionListener(listener);

c.add(button);

}

public void addBall(int priority,Color color)

{

Ball b = new Ball(canvas,color);

canvas.add(b);

BallThread thread = new BallThread(b);

thread.setPriority(priority);

thread.start();

}

private BallCanvas canvas;

}

/*A Thread make ball move...*/

class BallThread extends Thread

{

public BallThread(Ball aball)

{ ball = aball; }

public void run()

{

try

{

for(int i=1;i<=10000;i++)

{

ball.move();

sleep(5);

}

}

catch (InterruptedException e)

{

Thread.currentThread().interrupt();

}

}

private Ball ball;

}

/*draw the ball*/

class BallCanvas extends JPanel

{

public void add(Ball b)

{

balls.add(b);

}

public void paintComponent(Graphics g)

{

super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g;

for(int i=0;i{

Ball b = (Ball)balls.get(i);

b.drawBall(g2);

}

}

private ArrayList balls = new ArrayList();

}

class Ball

{

public Ball(Component c,Color color)

{

canvas = c;

acolor = color;

}

public void drawBall(Graphics2D g2)

{

g2.setColor(acolor);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值