import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Random; import javax.swing.JPanel; import javax.swing.Timer; /** * Test Panel * * Ein Panel mit einigen Bällen, die herumfliegen. Wenn man ins Feld klickt, * wechselt die Farbe. */ public class PerfDraw extends JPanel { private static final long serialVersionUID = 201005061717L; private static final int MAX_SPEED = 500; private long currTime; private long count; private double mean; // 9ms private long stepdt; private int n; private Ball[] balls; public PerfDraw(int n) { this.n = n; setLayout(null); setBackground(Color.WHITE); setPreferredSize(new Dimension(300,100)); balls = new Ball[n]; Random rand = new Random(); for (int i=0;i0 && ball.x+ball.size>=getWidth()) ball.vx = -ball.vx; if (ball.vy>0 && ball.y+ball.size>=getHeight()) ball.vy = -ball.vy; } getParent().repaint(); // Hack für diese Version stepdt = (System.nanoTime()-t0)/1000000; } private class Ball { private float x, y; private float vx, vy; private int size; private Color col; public Ball(int x, int y, float vx, float vy, int size, Color col) { this.x = x; this.y = y; this.vx = vx; this.vy = vy; this.size = size; this.col = col; } private void step(long dt) { x = x+vx*dt/1000; y = y+vy*dt/1000; } public void paint(Graphics g) { g.setColor(col); g.fillOval((int)Math.round(x), (int)Math.round(y), size,size); } } }