[Resolvido] Evento MouseEntered dentro de um Loop

Amigos, venho mais uma vez pedir ajuda de vocês!

Tenho o seguinte cenário:
Do lado direito existe uma lista de JLabel exibindo nome de alunos - lbl_nomeAluno[3]
Do lado esquerdo existe uma lista de JCheckBox (um para cada aluno respectivamente) - jCheckBox_aluno[3]

Criei um evento que, ao passar com o mouse em cima do JCheckBox, o respectivo JLabel iria mudar para a cor vermelha, porém isso não está ocorrendo.

        public void definirEventos2(){
            for (cont = 0; cont < 3; cont++){
                jCheckBox_aluno[teste].addMouseListener( new java.awt.event.MouseAdapter (){
                    public void mouseEntered (MouseEvent e){
                        lbl_nomeAluno[cont].setForeground(Color.red);
                    }
                });            
            }
        }

Ao executar o código, todos os JCheckBox, quando passo o mouse em cima, muda apenas a cor do último JLabel de aluno.

Alguém sabe como resolver isso?

Eu sei que poderia fazer manualmente um por um, mas o objetivo é mais para frente o numero de alunos aumentar.

O que está acontecendo é que a variável “cont” é a mesma para todas as instâncias do tratador de eventos. Isso é um detalhe que quem vai criar classes anônimas tem que ter em mente. Ao fim do loop, cont sai com o índice do último checkbox.

Ao invés de criar uma classe anônima, crie uma classe privada interna do seu JFrame:

[code]class MeuJFrame extends JFrame { // ou JPanel, JApplet, que seja

// Classe tratadora de evento (privada da sua classe de interface)
private class EventoCheck extends MouseAdapter {

  private int indice;

  public EventoCheck(int indice) {
     this.indice = indice;
  }

  public void mouseEntered(MouseEvent e) { 
     lbl_nomeAluno[indice].setForeground(Color.red);  // Aqui eu pego o índice armazenado
  }

}

// Atribuindo os eventos
public void definirEventos2(){
for (cont = 0; cont < 3; cont++){
jCheckBox_aluno[cont].addMouseListener( new EventoCheck(cont) ); // Instancia um objeto da classe privada
}
}

}[/code]

MarkKnopfler, muito obrigado mesmo! Salvou minha madrugada xD
Realmente, depois que vc mencionou faz sentido ter ocorrido esse problema, mas com a sua solução o programa rodou direitinho.

Thanks

you’re welcome.