0
我有jbuttons的行和列,當每個按鈕被點擊時,它們應該變成紅色,並且當第二次點擊時,它們應該返回到它們的原始顏色。到目前爲止,我寫的代碼如下:Action Listeners
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);
被指出「從一個內部類中引用的局部變量必須是最後的或有效的決賽。」有誰知道如何解決這一問題?
將其放在for循環中標記行 btn1 [i] [j] .setBackground(Color.RED); 說'從內部類引用的局部變量必須是最終的或有效的最終,並且不起作用 – May
將btn1變量定義爲final。 –
@paco面板p1位於主面板內。在主面板中,我已經在此處聲明瞭btn1變量,請參閱已編輯的問題以獲取視圖。行btn1 [i] [j] .setBackground(Color.RED);仍然沒有工作。 – May