Duvida com evento de mouse do JButton

Opa to tentando fazer o seguinte no meu codigo… se o botao estiver com tal icone ele faz uma ação, caso o contro faz outra…
Ele ta dando erro, alguem sabe oq esta errado?

public void mousePressed(MouseEvent e) {
for (int linha = 1; linha <= n; linha++) {
for (int coluna = 1; coluna <= n; coluna++) {
if (e.getSource() == buttons[linha][coluna]) {
// Clique com o botao esquerdo do mouse.
if (e.getButton() == MouseEvent.BUTTON1) {
if (buttons[linha][coluna].getIcon().equals(imagem)){
codigo…}
else { codigo }
}

				// Clique com botao direito do mouse.
				else if (e.getButton() == MouseEvent.BUTTON3) {
					buttons[linha][coluna].setIcon(imagem2);
					}
				}
			}
		}
	}
}

Briggado

Vou ser bem sincero, não entendi;

Eu tenho dois modos de trabalhar com botões;

Exemplo

Crio o botão

JButton btnSalvar = new JButton( "Salvar");
btnSalvar.setSize(130,35);
btnSalvar.setLocation(235, 265);
add (btnSalvar);

Implementando o “MouseListener”

public void mouseReleased(MouseEvent e) {
		if (e.getSource().equals(btnSalvar)){
			//evento
		}
		
}

Sem implementar o “MouseListener”

btnSalvar.addActionListener(new java.awt.event.ActionListener() {  
		    public void actionPerformed(java.awt.event.ActionEvent evt) {
		    
		    	try {
					//evento
				} catch (Exception e2) {
					// TODO: handle exception
				}  
		    	
		    }
}); 	

Bom, veja se algum consegue atender melhor a sua aplicação x)

EDIT:

Tente usar “.equals” no lugar de “==”

if (e.getButton().equals(MouseEvent.BUTTON1))

Só coloquei uma parte do código que é a parte do botão… o codigo esta funcionado, só não funciona qdo tento fazer a comparação com o o icone do botao…
fiz o teste com um botao separado fora do array, só para fazer o teste e da certo:

if (b1.getIcon().equals(imagem)){

só que quero colocar essa funcao num array pq o numero de JButtons pode alterar.

Tentei com o equals e não funciona assim, só com o == mesmo.

codigo que cria os botoes:

	for (linha = 1; linha <= n; linha++) {
		for (coluna = 1; coluna <= n; coluna++) {
			buttons[linha][coluna] = new JButton();
			buttons[linha][coluna].setPreferredSize(new Dimension(45, 45));
			buttons[linha][coluna].addMouseListener(this);
			tela.add(buttons[linha][coluna]);
		}
	}

Agora entendi melhor x)

Coloca a parte que você adiciona um ícone a esse botão também;

EDIT:

Acho que dei o exemplo anterior errado;

Aqui não é com o “.equals”?

if (e.getSource() == buttons[linha][coluna])
//Para
if (e.getSource().equals(buttons[linha][coluna]) )

Sou iniciante em Java, então não tenho tanta experiencia assim;

Ambos funcionam, mas infelizmente ele n consegue pegar o icone do botao para comparar, é ai que da o erro o resto tudo funcionou…

Oq eu realmente quero no programa é que quando ele esteja com aquele icone o primeiro botao do mouse não consiga mais fazer nada… mas n to conseguindo e tenho ctz q eh por causa do array, pq qdo coloquei para comparar com um botao especifico funcionou =°(…