ho trovato il codice adesso lo posto, spero qualcuno riesca ad aiutarmi

codice:
package Immagini;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;


public class MovimentoFrame extends JFrame{
	public static final int MILLISECONDI = 100;
	public static final int SPRITE_DIM = 32;
	public static final int COLONNE = 20;
	public static final int RIGHE = 20;
	public static final int APPLET_WIDTH = RIGHE*SPRITE_DIM;
	public static final int APPLET_HEIGHT = COLONNE*SPRITE_DIM;
	public static final int JUMP = SPRITE_DIM;
	private JLabel[] arraylabel;
	private ImageIcon imgPers;
	private JLabel labelPers;
	private JPanel jp;
	private boolean isControlled=true;
	private int x;
	private int y;
	private int inc_x;
	private int inc_y;
	private Timer timer;
	private Image image;
	private ImageIcon immagine;
	private ImageIcon imgTexture;
	
	public MovimentoFrame(int x0, int y0){
		x=x0;
		y=y0;
		inc_x=inc_y=0;
		
		try {
			image = ImageIO.read(new File("/home/vincenzo/Scrivania/grass09.jpg"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		getContentPane().setLayout(null); //tolgo il LayoutManager predefinito
		getContentPane().setPreferredSize(new Dimension(APPLET_WIDTH, APPLET_HEIGHT));
		imgPers = new ImageIcon("/home/vincenzo/Scrivania/persT.PNG");
		labelPers = new JLabel(imgPers);
		labelPers.setBounds(0, 0, 32, 32); // Imposto posizione e dimensione del mio JTextPane
		labelPers.setOpaque(false);
		jp = new BackgroundPanel(image);
		jp.setLayout(null);
		jp.setBounds(0, 0, APPLET_WIDTH, APPLET_HEIGHT); // Imposto posizione e dimensione del mio JPanel
		//getContentPane().add(labelPers);
		jp.add(labelPers);//
		createImageIcon();
		createPanelImage();
		getContentPane().add(jp); 
		addKeyListener(new DirectionKeyListener());
	    timer = new Timer(MILLISECONDI, new ActionListener() {
	            public void actionPerformed(ActionEvent evt) {
	                int x1 = x + inc_x;
	                int y1 = y + inc_y;
	                if ((x1>=0) && (x1<APPLET_WIDTH))
	                    x=x1;
	                if ((y1>=0) && (y1<APPLET_HEIGHT))
	                    y=y1;
	                aggiorna();
	            }
	        });
	}
	private class DirectionKeyListener extends KeyAdapter {
		//Spostiamo l'immagine a seconda dell'evento della tastiera
        public void keyPressed(KeyEvent event) {
        	
            switch (event.getKeyCode()) {
                case KeyEvent.VK_UP:
                    inc_y=-JUMP;
                    isControlled=false;
                    break;
                case KeyEvent.VK_DOWN:
                    inc_y=JUMP;
                    isControlled=false;
                    break;
                case KeyEvent.VK_LEFT:
                    inc_x=-JUMP;
                    isControlled=false;
                    break;
                case KeyEvent.VK_RIGHT:
                    inc_x=JUMP;
                    isControlled=false;
                    break;
                default:
                	break;
            }       
            
        }
        
        public void keyReleased(KeyEvent event) {
            
          switch (event.getKeyCode()) {
                case KeyEvent.VK_UP:
                case KeyEvent.VK_DOWN:
                    inc_y=0;
                    break;
                case KeyEvent.VK_LEFT:
                case KeyEvent.VK_RIGHT:
                    inc_x=0;
                    break;
            }
        }
    }
	public void aggiorna() {
	
		labelPers.setBounds(x, y,32,32);
		if(!isControlled)
			controll();
		repaint();
	}
	
	public void controll(){
		for(int i=0;i<RIGHE;i++)
			if(labelPers.getLocationOnScreen().equals(arraylabel[i].getLocationOnScreen())){
				System.out.println(arraylabel[i].getX()+" "+arraylabel[i].getY());
				
				break;
		}
		isControlled = true;
	}
	class BackgroundPanel extends JPanel
	{
	    private Image img;

	    public BackgroundPanel (Image img)
	    {
	        super (new BorderLayout ());
	        this.img = img;
	    }

	    public void paintComponent (Graphics g)
	    {
	        super.paintComponent (g);

	        g.drawImage (img, 0, 0, this);
	    }
	}
	
	private void createImageIcon() {
		int i;
		int j;
		
		arraylabel = new JLabel[RIGHE];
		imgTexture = new ImageIcon("/home/vincenzo/Scrivania/erbaTR.PNG");
		for(i=0;i<RIGHE;i++){
				arraylabel[i]= new JLabel(imgTexture);
				arraylabel[i].setSize(32,32);
				//arraylabel[i].setBounds(i*JUMP, JUMP*4, 32, 32);
			}
	}
	private void createPanelImage(){
		//for(int i=0;i<RIGHE;i++)
			//	jp.add(arraylabel[i]);
		for(int i=0;i<RIGHE;i++){
			arraylabel[i].setBounds(i*JUMP, JUMP*5, 32, 32);
			jp.add(arraylabel[i]);
		}
				
	}
	public static void main(String[] args) {
        MovimentoFrame c= new MovimentoFrame(0,0);
        c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        c.pack();
        c.setResizable(false);
        c.setVisible(true);
        c.timer.start();
        c.setLocationRelativeTo(null);
        System.out.println(c.getSize());
    }
	
}