linqiuppp
发贴: 8
积分: 0
|
于 2005-10-25 00:48
哪位大吓愿意指点小弟一下!下面是源程序。 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.awt.geom.*;
public class BoundThread { public static void main(String []args) { BoundFrame frame=new BoundFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } }
class BoundFrame extends JFrame { public BoundFrame() { setTitle("BoundThread"); setSize(500,400); panel=new BoundPanel(); Container contentPane=getContentPane(); contentPane.add(panel,BorderLayout.CENTER); JButton start=new JButton("Start"); JButton close=new JButton("Close"); start.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { Ball ball=new Ball(panel); panel.add(ball); BallThread thread=new BallThread(ball); thread.start(); } }); close.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } }); JPanel buttonPanel=new JPanel(); buttonPanel.add(start); buttonPanel.add(close); contentPane.add(buttonPanel,BorderLayout.SOUTH); } private BoundPanel panel; }
class BallThread extends Thread { public BallThread(Ball aball) { ball=aball; } public void run() { try{ for(int i=0;i<10000;i++) { ball.move(); sleep(5); } } catch( InterruptedException e){} } private Ball ball; } class BoundPanel extends JPanel { public void add(Ball aball) { balls.add(aball); } public void paintComponent(Graphics g) { super.paintComponent; Graphics2D g2=(Graphics2D)g; for(int i=0;i<balls.size();i++) { Ball ball=(Ball)balls.get; g2.fill(new Ellipse2D.Double(ball.x,ball.y,ball.Scale,ball.Scale)); } } private ArrayList balls; } class Ball { public Ball(Component apanel) { panel=(BoundPanel)apanel; } public void move() { x=x+dx; y=y+dy; if(x<0){x=0;dx=-dx;} if(y<0){y=0;dy=-dy;} if(x+Scale>panel.getWidth()) {x=panel.getWidth()-Scale;dx=-dx;} if(y+Scale>panel.getHeight()) {y=panel.getHeight()-Scale;dy=-dy;} panel.repaint(); } private BoundPanel panel; private int dx=2; private int dy=2; public int x=0; public int y=0; public int Scale=10; }
|