Todo depende un poco de como estés escribiendo el código.
Pero como idea general, has de conseguir una forma de poder transferir el ImageIcon que aplicas a las fichas (suponiendo que uses ImageIcon) a las piezas.
Para ello conviene que el ImageIcon sea un atributo de tu clase Ficha, para así tener una referencia que poder transferir.
Pongamos un ejemplo rápido.
No se como estás creando tus fichas, yo por ejemplo, voy a crearlas a partir de la clase JLabel.
El ImageIcon será un atributo, que podré comunicar "hacia fuera" mediante un método getter.
Cada ficha, recibirá por constructor una ruta String a la imagen que ha de mostrar como icono.
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class Ficha extends JLabel {
	
	private ImageIcon icono;
	
	public Ficha(String rutaImg) {
		setOpaque(true);
		setBackground(Color.WHITE);
		icono = new ImageIcon(Ficha.class.getClassLoader().getResource(rutaImg));
		setIcon(icono);
		setBorder(BorderFactory.createCompoundBorder(
				BorderFactory.createRaisedSoftBevelBorder(),
				BorderFactory.createEmptyBorder(10,10,10,10)));
	}
	
	public ImageIcon getIcono() {
		return icono;
	}
	
	public void deSeleccionar() {
		setBackground(Color.WHITE);
	}
	
	public void seleccionar() {
		setBackground(Color.BLUE);
	}
}Los método seleccionar() y deSeleccionar() lo único que hacen es cambiar el color de fondo.
La idea es que la ficha que se seleccione, su fondo visible alrededor del icono cambie de color. Así parece que lo que cambia es su borde, y se puede distinguir en todo momento la ficha actualmente seleccionada.
Ahora, viene la clase Pieza.
Puedo reutilizar la clase que puse como ejemplo en el otro tema. Simplemente la transformo en un JButton, le añado un constructor que no me pida los atributos boolean(ahora no los necesitamos) y hago que se pinten con un icono por defecto.
En este caso, será un interrogante, para indicar que la Pieza/botón está a la espera de recibir una imagen a partir de una ficha.
import javax.swing.ImageIcon;
import javax.swing.JButton;
public class Pieza extends JButton {
	
	public boolean esClara;
	public boolean esGrande;
	public boolean esRedonda;
	public boolean esHueca;
	
	public Pieza() {
		setIcon(new ImageIcon(Pieza.class.getClassLoader().getResource("img/interrogante.png")));
	}
	
	public Pieza(boolean esClara, boolean esGrande, boolean esRedonda, boolean esHueca) {
		this.esClara = esClara;
		this.esGrande = esGrande;
		this.esRedonda = esRedonda;
		this.esHueca = esHueca;
		setIcon(new ImageIcon(Pieza.class.getClassLoader().getResource("img/interrogante.png")));
	}
	
}Y ahora, una clase JFrame para mostrar las piezas y los botones.
En esta clase, usaré dos tipos de MouseListener.
Uno será para las fichas, y lo que hará es que cuando se clicke una ficha, se marcará como seleccionada y se recogerá en un atributo, el ImageIcon asociado a esa ficha.
El otro MouseListener será para los botones. Lo que hará será que cuando se pulse un botón, se le aplicará el ImageIcon que hemos recogido de alguna ficha seleccionada.
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class PruebaImagenes extends JFrame {
	
	private Ficha ficha1; private Ficha ficha2;
	private Ficha ficha3; private Ficha ficha4;
	private Pieza pieza1; private Pieza pieza2;
	private Pieza pieza3; private Pieza pieza4;
	
	private ImageIcon seleccion;
	
	public PruebaImagenes() {
		
		setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
		
		add(new PanelFichas());
		add(new PanelPiezas());
		
		setTitle("Test Imagenes");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}
	
	private class PanelFichas extends JPanel {
		
		public PanelFichas() {
			ficha1 = new Ficha("img/peon1.png");
			ficha2 = new Ficha("img/peon2.png");
			ficha3 = new Ficha("img/alfil.png");
			ficha4 = new Ficha("img/reina.png");
			ficha1.addMouseListener(new SeleccionIcono());
			ficha2.addMouseListener(new SeleccionIcono());
			ficha3.addMouseListener(new SeleccionIcono());
			ficha4.addMouseListener(new SeleccionIcono());
			setLayout(new GridLayout(1,4,5,5));
			add(ficha1); add(ficha2); add(ficha3); add(ficha4);
		}
	}
	
	private class PanelPiezas extends JPanel {
	
		public PanelPiezas() {
			pieza1 = new Pieza();
			pieza2 = new Pieza();
			pieza3 = new Pieza();
			pieza4 = new Pieza();
			pieza1.addMouseListener(new AplicarIcono());
			pieza2.addMouseListener(new AplicarIcono());
			pieza3.addMouseListener(new AplicarIcono());
			pieza4.addMouseListener(new AplicarIcono());
			setLayout(new GridLayout(2,2));
			add(pieza1); add(pieza2); add(pieza3); add(pieza4);
		}
	}
	
	//MouseListener para las FICHAS
	private class SeleccionIcono implements MouseListener {
		@Override
		public void mouseClicked(MouseEvent e) {
			//Deseleccionamos todas las fichas
			ficha1.deSeleccionar(); ficha2.deSeleccionar();
			ficha3.deSeleccionar(); ficha4.deSeleccionar();
			//Detectamos la seleccion actual
			Ficha seleccionada = (Ficha) e.getSource();
			//Marcamos como seleccionada
			seleccionada.seleccionar();
			//Capturamos su icono
			seleccion = seleccionada.getIcono();
		}
		@Override
		public void mousePressed(MouseEvent e) {}
		@Override
		public void mouseReleased(MouseEvent e) {}
		@Override
		public void mouseEntered(MouseEvent e) {}
		@Override
		public void mouseExited(MouseEvent e) { }
		
	}
	
	//MouseListener para las PIEZAS
	private class AplicarIcono implements MouseListener {
		@Override
		public void mouseClicked(MouseEvent e) {
			if (seleccion == null)
				JOptionPane.showMessageDialog(null, "Seleccione primero una FICHA",
						"Aplicar imagen", JOptionPane.WARNING_MESSAGE);
			else {
				//Detectamos pieza a la que se aplicará
				Pieza seleccionada = (Pieza) e.getSource();
				//Aplicamos icono
				seleccionada.setIcon(seleccion);
			}
		}
		@Override
		public void mousePressed(MouseEvent e) {}
		@Override
		public void mouseReleased(MouseEvent e) {}
		@Override
		public void mouseEntered(MouseEvent e) {}
		@Override
		public void mouseExited(MouseEvent e) { }
		
	}
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				new PruebaImagenes();	
			}
		});
	}
}En este video puede verse como funciona:
https://www.youtube.com/watch?v=dq6WyiXFSfQ