l'accès à la variable à l'intérieur de intérieur de la classe en java

Je suis en train de créer un tableau de JLabels, ils devraient tous aller invisible lorsque l'utilisateur clique dessus. Le problème vient lorsque vous essayez de configurer la souris auditeur à travers un intérieur de classe qui a besoin d'accéder à la variable d'itération de la boucle utilisée pour déclarer les étiquettes. Le Code est auto-explicatif:

    for(int i=1; i<label.length; i++) {
       label[i] = new JLabel("label " + i);
       label[i].addMouseListener(new MouseAdapter() {
          public void mouseClicked(MouseEvent me) {
             label[i].setVisible(false);   //compilation error here
          }
       });
       cpane.add(label[i]);
    }

J'ai pensé que je pouvais surmonter ce par l'utilisation de this ou peut-être super au lieu de l'appel de label[i] dans l'intérieur de la méthode, mais je n'ai pas été en mesure de le comprendre.

L'erreur de compilation est: variable locale i est accessible depuis l'intérieur de intérieur de la classe; doit être déclarée final`

Je suis sûr que la réponse doit être quelque chose de vraiment stupide je n'ai pas pensé ou peut-être que je suis en train de faire quelques petites erreur.

Toute aide serait appréciée

L'erreur est: local variable i is accessed from within inner class; needs to be declared final
alors peut-être vous devriez déclarer la variable comme final, non? (avoir un coup d'oeil à cette Q&A, aussi)
De la balle, Ce n'est pas une bonne idée d'avoir la variable d'itérateur final.
Similaire à stackoverflow.com/questions/14425826/...

OriginalL'auteur omtinez | 2010-10-10