У меня есть строки и столбцы кнопок jbuttons, и когда каждая кнопка нажата, они должны быть красными, а при повторном нажатии они должны вернуться к исходному цвету. До сих пор, код, который я написал следующим образом:Слушатели для прослушивания
public class MainPanel extends JPanel
{
private JButton[][] btn1 = new JButton[3][5];
public MainPanel()
{
JPanel MainPanel= new JPanel();
MainPanel.setPreferredSize(new Dimension(700,700));
JPanel p1 = new JPanel();
{
p1.setLayout(new GridLayout(3,5,10,10));
p1.setBackground(Color.WHITE);
for(int i = 0; i < 3; i++)
for(int j = 0; j < 5; j++)
{
btn1[i][j] = new JButton();
btn1[i][j].setBackground(Color.YELLOW);
p1.add(btn1[i][j]);
btn1[i][j].addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
btn1[i][j].setBackground(Color.RED);
}
}
);
}
}
}
}
Линия btn1[i][j].setBackground(Color.RED);
заявляет "локальные переменные ссылочные из внутреннего класса должно быть окончательным или эффективно окончательным. Кто-нибудь знает, как это исправить?
Ввод его в петлю для петли вверх по линии btn1 [i] [j] .setBackground (Color.RED); : «Местные переменные, на которые ссылается внутренний класс, должны быть окончательными или фактически окончательными и не работают – May
Определите переменную btn1 как окончательную. –
Панель @paco p1 расположена внутри основной панели. На главной панели я объявил здесь переменную btn1, см. Отредактированный вопрос для представления. Строка btn1 [i] [j] .setBackground (Color.RED); все еще не работает. – May