Как установить новый цвет фона на панели при нажатии на эту панель? - PullRequest
0 голосов
/ 19 марта 2019

Как видно из названия, я пытаюсь назначить новый цвет 1 из 10 панелей при нажатии на эту панель. Пока код выглядит так.

public void setBoard()
{

    for(int i = 0; i < NUM; i++) {
        panel[i] = new JPanel();
        panel1.add(panel[i]);
        panel[i].setBackground(col1);
        panel[i].addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
            panel[i].setBackground(col3);
            }
        });

    }

    for(int y = 0; y < bombs; y++) {
        panel[randomNum()].setBackground(col2);
    }

}

panel1 - это общий контейнер, куда входят все панели.

С этим кодом я получаю сообщение об ошибке, что локальная переменная i должна быть конечной, чтобы ссылаться на нее из внутреннего класса. Так как мне это сделать?

1 Ответ

0 голосов
/ 19 марта 2019

Нет необходимости в массиве. Событие содержит ссылку на компонент, который сгенерировал событие:

public void mouseClicked(MouseEvent e) 
{
    Component panel = e.getComponent();
    panel.setBackground(col3);
}
...