Como adicionar eventos em um vetor JPanel [RESOLVIDO]

Olá pessoal, estou com uma dúvida…

…há alguns dias atrás postei uma dúvida de como clonar 100 JPanel http://www.guj.com.br/java/233382-como-clonar-100-cem-jpanel# , o pessoal me ajudou e consegui fazer. Só que agora estou querendo colocar um evento que me retorne qual dos índices do vetor JPanel que foi clicado, porque assim eu posso carregar uma imagem em um JLabel que está em um dos indíces do JPanel. Tentei fazer isto usando addActionListener e mouseclicked porém (quando não dava erro e nem rodava) ele não conseguia me retornar o indice que foi clicado.

Se alguém poder me ajudar aguardo uma resposta e desde já agradeço :smiley:

exemplo de como pegar o indice do jpanel, o indice sera exibido na barra de titulo

[code]public class Tela extends JFrame {

JPanel[] jPanels;

public Tela() {
    super();
    jPanels = new JPanel[4];
    getContentPane().setLayout(new GridLayout(2, 2));
    for (int i = 0; i < 4; i++) {
        jPanels[i] = new JPanel();
        jPanels[i].addMouseListener(new MouseListenerImpl(i));//acao
        getContentPane().add(jPanels[i]);
    }
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setVisible(true);
}

private class MouseListenerImpl implements MouseListener {

    int i;
    public MouseListenerImpl(int i) {
        this.i = i;//indice do panel
    }

    public void mouseClicked(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
        setTitle("panel: " + i);//quando clika esse metodo é chamado, assim podera pegar o indice do array
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }
}

public static void main(String[] args) {
    new Tela();
}[/code]

Boa Noite
Eu faria desta forma, mas me parece gambiarra. Por favor se alguem souber a maneira correta de se fazer isso por favor me corrijam.


		for(int i =0; i &lt; vetorPainel.length; i++) {  
			vetorPainel[i] = new JPanel();
			
			vetorPainel[i].addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent e){
					for(int i = 0; i &lt; vetorPainel.length; i++){
						if(e.getSource() == vetorPainel[i]){
							//retorno o painel que gerou o evento
						}
					}
				}
			});
						
		    getContentPane().add(vetorPainel[i]); 
		}
	}

Abraço!

Cara, não é mais simples tu colocar tudo numa list ao invés de array e depois usar indexOf() em conjunso com o e.getSource(), saca? Fala aí se num entendeu a idéia.

ElissonAndrade, entendi sim, usei uma list como vc falou com o indexOf() e o getSource() assim:

Funcionou perfeitamente, Muito Obrigado!

Muito obrigado pessoal os exemplos de vocês funcionaram perfeitamenta, obrigado a todos pelo apoio.

Eu consegui fazer também (com a ajuda de um outro post que eu achei aqui no forúm, onde se criava um JFrame com 60 botões simulando um cartão da Mega Sena), então eu vi que se dá para fazer um for e ir instanciando um JButton a cada loop e settando seu nome ex:

for(Byte cont = 0; cont < 100; cont++){
JButton btn = new JButton();
JButton.setName(btn + cont);
}

E para adicioanar evento em cada botão, criei um método que faz um override no mouseClicked e recebe como parâmetro um event do botão que foi clicado

Mesmo assim muito obrigado a todos, não tinha nem ideia de fazer isto com o vetor.