java版bounce_BounceThread.java

package four2;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

* Shows animated bouncing balls.

* @version 1.33 2007-05-17

* @author Cay Horstmann

*/

public class BounceThread

{

public static void main(String[] args)

{

EventQueue.invokeLater(new Runnable()

{

public void run()

{

JFrame frame = new BounceFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

});

}

}

/**

* A runnable that animates a bouncing ball.

*/

class BallRunnable implements Runnable

{

/**

* Constructs the runnable.

* @aBall the ball to bounce

* @aPanel the component in which the ball bounces

*/

public BallRunnable(Ball aBall, Component aComponent)

{

ball = aBall;

component = aComponent;

}

public void run()

{

try

{

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

{

ball.move(component.getBounds());

component.repaint();

Thread.sleep(DELAY);

}

}

catch (InterruptedException e)

{

}

}

private Ball ball;

private Component component;

public static final int STEPS = 1000;

public static final int DELAY = 5;

}

/**

* The frame with panel and buttons.

*/

class BounceFrame extends JFrame

{

/**

* Constructs the frame with the component for showing the bouncing ball and Start and Close

* buttons

*/

public BounceFrame()

{

setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

setTitle("BounceThread");

comp = new BallComponent();

add(comp, BorderLayout.CENTER);

JPanel buttonPanel = new JPanel();

addButton(buttonPanel, "Start", new ActionListener()

{

public void actionPerformed(ActionEvent event)

{

addBall();

}

});

addButton(buttonPanel, "Close", new ActionListener()

{

public void actionPerformed(ActionEvent event)

{

System.exit(0);

}

});

add(buttonPanel, BorderLayout.SOUTH);

}

/**

* Adds a button to a container.

* @param c the container

* @param title the button title

* @param listener the action listener for the button

*/

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

{

JButton button = new JButton(title);

c.add(button);

button.addActionListener(listener);

}

/**

* Adds a bouncing ball to the canvas and starts a thread to make it bounce

*/

public void addBall()

{

Ball b = new Ball();

comp.add(b);

Runnable r = new BallRunnable(b, comp);

Thread t = new Thread(r);

t.start();

}

private BallComponent comp;

public static final int DEFAULT_WIDTH = 450;

public static final int DEFAULT_HEIGHT = 350;

public static final int STEPS = 1000;

public static final int DELAY = 3;

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值