アニメーション処理

  

●サンプル

import java.awt.*;
import javax.swing.*;
public class BallAnimation {
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setTitle("Ball Animation");
    frame.setSize(300, 400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    MyPanel panel = new MyPanel();
    frame.getContentPane().add(panel);
    frame.setVisible(true);
  }
}

class MyPanel extends JPanel implements Runnable {
  Ball ball;
  public MyPanel() {
    setBackground(Color.white);
    ball = new Ball(100,100,2,1,0,0,280,350);
    Thread refresh = new Thread(this);
    refresh.start();
  }

  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    ball.forward();
    g.setColor(Color.red);
    g.fillOval(ball.getX(), ball.getY(), 20, 20);
  }

  public void run() {
    while(true) {
      repaint();
      try {
        Thread.sleep(10);
      }
      catch(Exception e) {
      }
    }
  }
}
class Ball {
  private int x;
  private int y;
  private int vx;
  private int vy;
  private int left;
  private int right;
  private int top;
  private int bottom;
  public Ball(int x, int y, int vx, int vy, int l, int t, int r, int b) {
  this.x = x;
  this.y = y;
  this.vx = vx;
  this.vy = vy;
  right = r;
  left = l;
  top = t;
  bottom = b;
  }
  public void forward() {
    if (x + vx < left || x + vx > right)
      vx = -vx;
    if (y + vy < top || y + vy > bottom)
      vy = -vy;
      x = x + vx;
      y = y + vy;
  }
  public int getX() {
    return x;
  }
  public void setX(int x) {
    this.x = x;
  }
  public int getY() {
    return y;
  }
  public void setY(int y) {
    this.y = y;
  }
}
  

●実行結果