con questo codice i jbutton non funzionano..

questo è il cod:

codice:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;

import javax.swing.*;

public class GifAnimata extends JFrame  {
	ImageIcon img;
	Image animation; 
	Immagine currentAnimation = new Immagine();
	JFrame frame = new JFrame("prova Animazione");
	JButton buttonPause = new JButton("Pause");
	JButton buttonPlay = new JButton("Play");
	JButton buttonImage1 = new JButton("Image1");
	JButton buttonImage2 = new JButton("Image2");
	Timer timer;
	JScrollPane scroll = new JScrollPane();

	
	public GifAnimata() {	
		prova();
		
	}
	public void prova()  {
		
		JPanel p = new JPanel();

		p.add(buttonPlay);
		buttonPlay.addActionListener(new ActionListener() {					
			public void actionPerformed(ActionEvent evt) {
				timer.start();
			}
		});
		p.add(buttonPause);
		buttonPause.addActionListener(new ActionListener() {					
			public void actionPerformed(ActionEvent evt) {
				timer.stop();
			}
		});
		p.add(buttonImage1);
		buttonImage1.addActionListener(new ActionListener() {					
			public void actionPerformed(ActionEvent evt) {
				img = new ImageIcon("c://db/testi/moda.jpg");
				animation = img.getImage();								
				prepareImage(animation,this);
				currentAnimation.setX(10);
				currentAnimation.setY(+250); 		
				timer = new Timer(50, new ActionListener() {  				             
		            public void actionPerformed(ActionEvent ae) { 
		            	currentAnimation.setY(currentAnimation.getY() - 1);	
		            	scroll.repaint(); 
		            } 
		            
		        });
				
			}

			private void prepareImage(Image animation,
					ActionListener actionListener) {
				// TODO Auto-generated method stub
				currentAnimation.setY(currentAnimation.getY() - 1);
				panel.repaint();
			}

			
		});
		p.add(buttonImage2);
		buttonImage2.addActionListener(new ActionListener() {					
			public void actionPerformed(ActionEvent evt) {
				img = new ImageIcon("c://db/testi/grignani.jpg");
				animation = img.getImage();								
				prepareImage(animation, this);
				currentAnimation.setX(10);
				currentAnimation.setY(+250); 		
				timer = new Timer(200, new ActionListener() {  				             
		            public void actionPerformed(ActionEvent ae) { 
		            	currentAnimation.setY(currentAnimation.getY() - 1);	
		                scroll.repaint(); 
		            } 
		        });
			}

			private void prepareImage(Image animation,
					ActionListener actionListener) {
				// TODO Auto-generated method stub
				currentAnimation.setY(currentAnimation.getY() - 1);
				panel.repaint();
			}
		});
		frame.setTitle("Gif Animata");
		frame.setSize(1100, 720);   
		panel.add(new JLabel(img));
        JScrollPane scrollPane = new JScrollPane(panel);
        frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
		frame.add(p, BorderLayout.NORTH);
		frame.setLocationRelativeTo( null );
		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		frame.setVisible( true );
	}

	JPanel panel = new JPanel() {	
    public void paint(Graphics g) {
		super.paint(g);
		Graphics2D g2d = (Graphics2D) g;
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, 1100, 720);
		g2d.drawImage(animation, currentAnimation.getX(), currentAnimation.getY(), this);
		
		Toolkit.getDefaultToolkit().sync(); 
		g.dispose();

	}
	};
	   
   public static void main(String[] args) {
	   GifAnimata ga = new GifAnimata();
   }
}
class Immagine {
	/*
	 * Simple Object class to store the ball's co-ordinates.
	 */
	private int x;
	private int y;

	Immagine() {
		;
	} 

	public int getX() { 
		return x;
	}

	public void setX(int x2) {
		x = x2;
	}

	public int getY() {
		return y;
	}

	public void setY(int y2) {
		y = y2;
	}
}
come mai???