Salve, io ho un problema e non so come posso risolvere.
In pratica sto costruendo un editor di Livello.
Io ho un Frame su cui disegno 2 pannelli, Il primo che si chiama Oggetti contiene dei bottoni che rappresentano gli oggetti da disegnare sull'altro pannello.
Il secondo che si chiama "Pannello" e dove vado a disegnare gli oggetti.
Come posso fare per passare l'evento della pressione del mouse da un pannello ad un altro???
E poi dove attacco il MouseListener???(nel Frame,nel pannello Oggetto, oppure in Pannello)???

Allego codice frame
codice:
public class FrameEditor1 extends JFrame {
	String frameTitle = "Editor Flying Monkey vers. 1.0";
	JPanel pannello;
    JPanel oggetti;
    JPanel barra;
public FrameEditor1() {
		 	super();
	        this.setTitle(frameTitle);
	        this.setSize(Costanti.WIDTH,Costanti.HEIGHT );  //dimensioni della finestra
			//this.setUndecorated(true);//non fa vedere i bottoni di ridimensionamento e chiusura
	       // this.setResizable(false);
	        this.setLayout(new BorderLayout());
	        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	        setLocationRelativeTo(null);//centra la finestra
	        oggetti= new Oggetti();
	        barra= new Barra();
	        pannello =new Pannello();
			this.add(oggetti,BorderLayout.WEST);
			this.add(barra,BorderLayout.NORTH);
			this.add(new JScrollPane(pannello),BorderLayout.CENTER);
			
		}

}
Pannello Oggetto:

codice:
public class Oggetti extends JPanel {
	private GestioneImmagini gm;
	private JButton scimmia;
	private JButton uccello;
	private JButton difesa;
	private JButton palla;
	private JButton banana;
	private JButton casco;
	private JButton ananas;
	private JButton fulmine;
	private JButton cento;
	private JButton trecento;
	private JLabel oggetto;
	private JPanel oggetti;
	public Oggetti () {
		gm=new GestioneImmagini();
        ImageIcon ico5 =new ImageIcon(gm.getImmagineuccellof());
        ImageIcon ico3 =new ImageIcon(gm.getImmaginepalla());
        ImageIcon ico4 =new ImageIcon(gm.getImmaginefaccia());
        ImageIcon ico6 =new ImageIcon(gm.getImmaginebananae());
        ImageIcon ico7 =new ImageIcon(gm.getImmagineananas());
        ImageIcon ico8 =new ImageIcon(gm.getImmaginefulmine1());
        ImageIcon ico9 =new ImageIcon(gm.getImmaginecasco());
        ImageIcon ico10 =new ImageIcon(gm.getImmaginedifesae()); 
        ImageIcon ico11 =new ImageIcon(gm.getImmaginep100());
        ImageIcon ico12 =new ImageIcon(gm.getImmaginep300());
        
        this.setLayout(new BorderLayout());
        
        oggetto=new JLabel();
        oggetto.setText("         Oggetti:     ");
        oggetto.setFont(new Font("Arial",Font.BOLD,22));
        
        this.add(oggetto,"North");
        
        oggetti=new JPanel();
        oggetti.setLayout(new GridLayout(5,2));
        
        
        scimmia=new JButton();
        scimmia.setMargin (new Insets (0, 0, 0, 0));
		scimmia.setContentAreaFilled(false);
        scimmia.setIcon(ico4);
        scimmia.setPressedIcon(ico4);
        scimmia.setBorderPainted(false);
        scimmia.setMargin (new Insets (0, 0, 0, 0));
        scimmia.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        scimmia.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
		oggetti.add(scimmia);
		
        uccello=new JButton();
        uccello.setMargin (new Insets (0, 0, 0, 0));
		uccello.setContentAreaFilled(false);
        uccello.setIcon(ico5);
        uccello.setPressedIcon(ico5);
        uccello.setBorderPainted(false);
		uccello.setMargin (new Insets (0, 0, 0, 0));
		uccello.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
		uccello.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
		oggetti.add(uccello);
		
        difesa=new JButton();
        difesa.setMargin (new Insets (0, 0, 0, 0));
        difesa.setContentAreaFilled(false);
        difesa.setIcon(ico10);
        difesa.setPressedIcon(ico10);
        difesa.setBorderPainted(false);
        difesa.setMargin (new Insets (0, 0, 0, 0));
        difesa.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        difesa.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
        oggetti.add(difesa);
        
        palla=new JButton();
        palla.setMargin (new Insets (0, 0, 0, 0));
		palla.setContentAreaFilled(false);
        palla.setIcon(ico3);
        palla.setPressedIcon(ico3);
        palla.setBorderPainted(false);
        palla.setMargin (new Insets (0, 0, 0, 0));
        palla.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        palla.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
		oggetti.add(palla);
		
        banana=new JButton();
        banana.setMargin (new Insets (0, 0, 0, 0));
		banana.setContentAreaFilled(false);
        banana.setIcon(ico6);
        banana.setPressedIcon(ico6);
        banana.setBorderPainted(false);
        banana.setMargin (new Insets (0, 0, 0, 0));
        banana.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        banana.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
		oggetti.add(banana);
		
        casco=new JButton();
        casco.setMargin (new Insets (0, 0, 0, 0));
        casco.setContentAreaFilled(false);
        casco.setIcon(ico9);
        casco.setPressedIcon(ico9);
        casco.setBorderPainted(false);
        casco.setMargin (new Insets (0, 0, 0, 0));
        casco.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        casco.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
        oggetti.add(casco);
        
        ananas=new JButton();
        ananas.setMargin (new Insets (0, 0, 0, 0));
		ananas.setContentAreaFilled(false);
        ananas.setIcon(ico7);
        ananas.setPressedIcon(ico7);
        ananas.setBorderPainted(false);
        ananas.setMargin (new Insets (0, 0, 0, 0));
        ananas.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        ananas.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
		oggetti.add(ananas);
		
        fulmine=new JButton();
        fulmine.setMargin (new Insets (0, 0, 0, 0));
		fulmine.setContentAreaFilled(false);
        fulmine.setIcon(ico8);
        fulmine.setPressedIcon(ico8);
        fulmine.setBorderPainted(false);
        fulmine.setMargin (new Insets (0, 0, 0, 0));
        fulmine.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        fulmine.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
		oggetti.add(fulmine);
		
        cento=new JButton();
        cento.setMargin (new Insets (0, 0, 0, 0));
        cento.setContentAreaFilled(false);
        cento.setIcon(ico11);
        cento.setPressedIcon(ico11);
        cento.setBorderPainted(false);
        cento.setMargin (new Insets (0, 0, 0, 0));
        cento.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        cento.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
        oggetti.add(cento);
        
        trecento=new JButton();
        trecento.setMargin (new Insets (0, 0, 0, 0));
        trecento.setContentAreaFilled(false);
        trecento.setIcon(ico12);
        trecento.setPressedIcon(ico12);
        trecento.setBorderPainted(false);
        trecento.setMargin (new Insets (0, 0, 0, 0));
        trecento.setCursor (Cursor.getPredefinedCursor (Cursor.HAND_CURSOR));
        trecento.setToolTipText("Premi il bottone per selezionare l'elemento corrente");
        oggetti.add(trecento);
        
        this.add(oggetti,"Center");
        
	}

}
Pannello "Pannello":

codice:
public class Pannello extends JPanel implements Runnable   {
	private GestioneImmagini gm;
	public Pannello() { 
	        new Thread(this).start();
	        gm=new GestioneImmagini();
	        setPreferredSize(new Dimension(Costanti.N*Costanti.CELLA,Costanti.HEIGHTGAME));
	  }
	public void disegna(Graphics g) {
		int indicemin=0;
		for (int i=0;i<Costanti.CELLA;i++) {
		g.drawImage(gm.getImmaginecielo(), indicemin,0,Costanti.WIDTH,Costanti.HEIGHTGAME,this);
		g.drawImage(gm.getImmaginemontagne(), indicemin,Costanti.HEIGHT-Costanti.HEIGHTMONTAGNE,Costanti.WIDTH,Costanti.HEIGHTMONTAGNE,this);
		g.drawImage(gm.getImmagineprato(), indicemin,Costanti.HEIGHT-Costanti.HEIGHTPRATO,Costanti.WIDTH,Costanti.HEIGHTPRATO,this);
		indicemin+=Costanti.WIDTH;
		}

		
		
		for(int x=0; x<=Costanti.N*Costanti.CELLA; x=x+Costanti.CELLA) {
		      g.drawLine(x, 0, x, Costanti.M*Costanti.CELLA);
		    }

		    /* disegna le linee orizzontali */
		    for(int y=0; y<=Costanti.M*Costanti.CELLA; y=y+Costanti.CELLA) {
		      g.drawLine(0, y, Costanti.N*Costanti.CELLA, y);
		    }


}
	public void paintComponent(Graphics g){
			super.paintComponent(g);		
			disegna(g);
	}
	public GestioneImmagini getgm() {
		   return gm;
	}
	   
	public void run() {
			while (true) {
				repaint();
				try {
					Thread.sleep(100);
				} 
				catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
	}
}