Grazie mille!!!!! Non ci avevo pensato e sono giorni che ci stavo lavorando....
Riporto il codice per chi si trovasse in una situazione simile:

codice:
import javax.swing.JButton;
import javax.swing.JPanel;

public class Prova extends JPanel{

	private JButton prova;
	
	private boolean active;
	
	public Prova() {
		
		active = false;
		
		prova = new JButton();
		
		prova.setName("prova");
		prova.addMouseListener(new MouseCatcher(this)); //Passo this overo questa classe al costrutore della classe che implementa MouseListener
	}
	
	public void check() {
		
		if(active) {
			System.out.println("attivo");
			active = false;
		}
		else {
			System.out.println("inattivo");
			active = true;
		}
		
	}
}
codice:
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class MouseCatcher implements MouseListener{


       private Prova prova; //Variabile di istanza di tipo Prova

        //Costruttore al quale passo il riferimento alla classe chiamante
	public MouseCatcher(Prova p) {
	
          prova = p; // Pongo la variabile d'istanza uguale al riferimento
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
		if(e.getComponent().getName() == "prova")
		{
			prova.check(); //utilizzo la variabile d'istanza
		}
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

}