关于线程控制小球跳跃反弹的例子程序 急需一个线程控制小球跳跃反弹的例子程序!给源代码的直接结帖! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.util.*;import javax.swing.*;public class Bounce { public Bounce() { } public static void main(String[] args) { JFrame frame = new BounceFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }}class Ball{ public void move(Rectangle2D bounds) { x+=dx; y+=dy; if(x < bounds.getMinX()) { x=bounds.getMinX(); dx=-dx; } if(x+XSIZE >=bounds.getMaxX()) { x=bounds.getMaxX()-XSIZE; dx=-dx; } if(y<bounds.getMinY()) { y=bounds.getMinY(); dy=-dy; } if(y+YSIZE >=bounds.getMaxY()) { y=bounds.getMaxY()-YSIZE; dy=-dy; } } public Ellipse2D getShape() { return new Ellipse2D.Double(x,y,XSIZE,YSIZE); } private static final int XSIZE = 15; private static final int YSIZE = 15; private double x =100; private double y =200; private double dx = 1; private double dy = 1;}class BallPanel extends JPanel{ public void add(Ball b) { balls.add(b); } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; for(Ball b : balls) { g2.fill(b.getShape()); } } private ArrayList<Ball> balls = new ArrayList<Ball>();}class BounceFrame extends JFrame{ public BounceFrame() { setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); setTitle("Bounce"); panel = new BallPanel(); this.getContentPane().add(panel, BorderLayout.CENTER); JPanel buttonpanel = new JPanel(); addButton(buttonpanel, "start", new ActionListener() { public void actionPerformed(ActionEvent event) { panel.getGraphics().clearRect(0,0,450,350); addBall(); } }); this.getContentPane().add(buttonpanel,BorderLayout.SOUTH); addButton(buttonpanel, "Close", new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); } public void addButton(Container c,String title,ActionListener listener) { JButton button = new JButton(title); c.add(button); button.addActionListener(listener); } public void addBall() { try { Ball ball = new Ball(); panel.add(ball); for(int i=1;i<=STEPS;i++) { ball.move(panel.getBounds()); panel.paint(panel.getGraphics()); Thread.sleep(DELAY); } } catch(InterruptedException e) { } } private BallPanel panel; 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;}可以结账了! 谁有好的随机子数组函数 怎么运用JProgressBar提示程序启动进度 静态类有构造方法? 无从下手的问题,请高手指导 使用JAVA发送FAX 高手帮一下忙~!~ 最简单的从键盘输入的输入流怎么写? 哪里有thing in java每章的练习题答案下载~~~ Jdk的问题 有个问题我始终不明白——关于数据结果的实现原理 一个时间器的重载run()方法的问题。不知道在run()内能不能够创建对象 孙子算经用Java求解????
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;public class Bounce {
public Bounce() {
} public static void main(String[] args) {
JFrame frame = new BounceFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}class Ball
{
public void move(Rectangle2D bounds)
{
x+=dx;
y+=dy;
if(x < bounds.getMinX())
{
x=bounds.getMinX();
dx=-dx;
}
if(x+XSIZE >=bounds.getMaxX())
{
x=bounds.getMaxX()-XSIZE;
dx=-dx;
}
if(y<bounds.getMinY())
{
y=bounds.getMinY();
dy=-dy;
}
if(y+YSIZE >=bounds.getMaxY())
{
y=bounds.getMaxY()-YSIZE;
dy=-dy;
}
} public Ellipse2D getShape()
{
return new Ellipse2D.Double(x,y,XSIZE,YSIZE);
} private static final int XSIZE = 15;
private static final int YSIZE = 15;
private double x =100;
private double y =200;
private double dx = 1;
private double dy = 1;
}class BallPanel extends JPanel
{
public void add(Ball b)
{
balls.add(b);
} public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
for(Ball b : balls)
{
g2.fill(b.getShape());
}
}
private ArrayList<Ball> balls = new ArrayList<Ball>();
}
class BounceFrame extends JFrame
{
public BounceFrame()
{
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
setTitle("Bounce"); panel = new BallPanel();
this.getContentPane().add(panel, BorderLayout.CENTER); JPanel buttonpanel = new JPanel();
addButton(buttonpanel, "start",
new ActionListener() {
public void actionPerformed(ActionEvent event) {
panel.getGraphics().clearRect(0,0,450,350);
addBall();
}
});
this.getContentPane().add(buttonpanel,BorderLayout.SOUTH);
addButton(buttonpanel, "Close",
new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
}); }
public void addButton(Container c,String title,ActionListener listener)
{
JButton button = new JButton(title);
c.add(button);
button.addActionListener(listener);
} public void addBall()
{
try
{
Ball ball = new Ball();
panel.add(ball); for(int i=1;i<=STEPS;i++)
{
ball.move(panel.getBounds());
panel.paint(panel.getGraphics());
Thread.sleep(DELAY);
}
}
catch(InterruptedException e)
{
}
}
private BallPanel panel;
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;
}可以结账了!