import java.awt.geom.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; import java.util.Random; public class OlyAnimated extends JComponent implements Runnable{ Random r; Image img; double heightWidthRatio; Thread animator; OlyAnimated (String imgName) { r = new Random(); img = getToolkit().getImage(imgName); try { MediaTracker tracker = new MediaTracker(this); tracker.addImage(img, 0); tracker.waitForID(0); } catch (Exception e) {} double width = img.getWidth(this); double height = img.getHeight(this); heightWidthRatio=height/width; animator = new Thread(this); animator.start(); } public void run() { while (1==1) { try { Thread.sleep(100); repaint(); } catch (InterruptedException e) { System.out.println(e); } } } public void paintComponent(Graphics g) { int dia=50; int stX=r.nextInt(180); int stY=r.nextInt(280); Graphics2D g2 = (Graphics2D)g; g2.drawImage(img,stX,stY,100,(int)(100*heightWidthRatio),this); } public static void main(String[] args) { JFrame frame = new JFrame(); JPanel panel = new JPanel(new BorderLayout()); panel.setBackground(Color.WHITE); OlyAnimated oly = new OlyAnimated("oly.gif"); panel.add(oly); frame.add(panel); final int FRAME_WIDTH = 300; final int FRAME_HEIGHT = 400; frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); frame.setTitle("Frame avec Panel"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }