import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class ImageMotion extends JPanel {
BufferedImage image;
Rectangle r;
public ImageMotion(BufferedImage image) {
this.image = image;
r = new Rectangle(100, 100, image.getWidth(), image.getHeight());
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.drawImage(image, r.x, r.y, this);
}
private void moveImage(int dx, int dy) {
r.x += 2*dx;
r.y += 2*dy;
repaint();
}
private MouseMotionListener waver = new MouseMotionAdapter() {
Point lastP = new Point();
public void mouseMoved(MouseEvent e) {
Point p = e.getPoint();
int dx = p.x < lastP.x ? -1 : p.x > lastP.x ? 1 : 0;
int dy = p.y < lastP.y ? -1 : p.y > lastP.y ? 1 : 0;
lastP.setLocation(p);
moveImage(dx, dy);
}
};
public static void main(String[] args) throws IOException {
BufferedImage image = ImageIO.read(new File("images/dukeWaveRed.gif"));
ImageMotion test = new ImageMotion(image);
test.addMouseMotionListener(test.waver);
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(test);
f.setSize(400,400);
f.setLocation(200,200);
f.setVisible(true);
}
}