Jogo da Memória, comparar?!

Estou fazendo um jogo de memória e estou com a seguinte dúvida.

Estou usando botões para colocar as imagens, meu problema está na hora de comparar se as imagens são iguais ou não!

Eu to fazendo o seguinte, o cara clica no primeiro botão, aparece a imagem e é armazenada numa variável o nome do arquivo de imagem, quando ele clica no outro botão ele faz a mesma coisa pega o nome do arquivo e compara com o primeiro botão, se for igual o nome dos arquivos beleza a figura botão fica lá senão as imagens saem!!

Meu problema ta ai!

Do jeito que eu fiz não deu certo!!

Se alguem tiver outra ideia para poder comparar as imagens eu agradeço.

CÓDIGO LOGO A BAIXO


package MEMORIASAM;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Botões extends JPanel implements ActionListener {

	ImageIcon im1 = new ImageIcon(getClass().getResource("img1.gif"));

	ImageIcon im2 = new ImageIcon(getClass().getResource("img2.gif"));

	ImageIcon im3 = new ImageIcon(getClass().getResource("img3.gif"));

	//b1.setContentAreaFilled(false);  //tira cor de fundo do botão
	//b1.setBorderPainted(false);     //tira as bordas

	JButton boton1 = new JButton("");
	JButton boton2 = new JButton("");

	public Botões() {

		setLayout(null);

		boton1.setBounds(40, 15, 60, 60);
		boton2.setBounds(110, 15, 60, 60);

		boton1.addActionListener(this);
		boton2.addActionListener(this);

		add(boton1);
		add(boton2);
	}

	public void actionPerformed(ActionEvent e) {
		String temp1 = "", temp2 = "";

		if (e.getSource() == boton1) {
			boton1.setIcon(im1);  // IMAGENS
			temp1 = boton1.getIcon().toString().substring(
					boton1.getIcon().toString().lastIndexOf("/"),
					boton1.getIcon().toString().length()).replaceAll("/", "");
		}

		if (e.getSource() == boton2) {
			boton2.setIcon(im1);  //IMAGENS
			temp2 = boton2.getIcon().toString().substring(
					boton2.getIcon().toString().lastIndexOf("/"),
					boton2.getIcon().toString().length()).replaceAll("/", "");
		}

			confereImagens(temp1, temp2);
	}

	public void confereImagens(String img1, String img2) {

		if (img1.equals(img2)) {
			boton1.setIcon(im1);
			boton2.setIcon(im1);
		} else {
			boton1.setIcon(null);
			boton2.setIcon(null);
		}

	}

	public static void main(String args[]) {

		JFrame frame = new JFrame("MEMORIA");
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent evt) {
				System.exit(0);
			}
		});
		frame.getContentPane().add(new Botões(), BorderLayout.CENTER);
		frame.setSize(200, 150);

		frame.setVisible(true);
	}
}

Tem alguns erros o teu jogo,
pra pegar a string da imagem não precisa fazer aquilo tudo, substring.toString etc, faz só temp1 = boton1.getIcon().toString(); mesmo se pegar o caminho da imagen não tem problema porque elas supostamente estão no mesmo diretório, então a string vai ser igual.
No actionPerformed você está limpando os temps, então sempre um vai ir pro método confereImagens vazio “”. E você nunca vai conseguir ver a imagem porque no metodo confereImagens você está setando ela como null, quando você abre a imagem 1 ela não tem com quem verificar a igualdade e dai fecha.

Um conselho crie um método onde clicando em qualquer botão vai para esse método
Ai no método insira um parametro para a imagem e coloque uma variavel para jogada e uma para comprar(1 ou 2)

ex:
int jogada = 1;
String comp = “”;
public void ComparaJogadas(Icon icon)
{

if(jogada==1)
{
jogada = 2;
comp = icon+"";
}
else
{
jogada = 1;
if(comp.equals(icon+""))
{
/ /Acertou imagem
}
else
{
//Falhou imagem
}
}
espero ter ajudado alguma duvida pergunte