Я пытаюсь создать массив 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 доступна из внутреннего класса; должен быть объявлен окончательным`
Я уверен, что ответ должен быть чем-то действительно глупым, о котором я не думал, или, может быть, я делаю небольшую ошибку.
Любая помощь будет оценена