доступ к переменной внутри внутреннего класса в java

Я пытаюсь создать массив JLabels, все они должны стать невидимыми при нажатии. Проблема возникает при попытке настроить прослушиватель мыши через внутренний класс, которому требуется доступ к переменной итерации цикла, используемого для объявления меток. Код не требует пояснений:

    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]);
    }

Я думал, что смогу решить эту проблему, используя this или, может быть, super вместо вызова label [i] во внутреннем методе, но Я не смог понять этого.

Ошибка компиляции: доступ к локальной переменной i осуществляется из внутреннего класса; должен быть объявлен окончательным`

Я уверен, что ответ должен быть чем-то действительно глупым, о котором я не подумал, или, может быть, я делаю небольшую ошибку.

Любая помощь будет принята с благодарностью

17
задан Oscar Wahltinez 10 October 2010 в 18:35
поделиться