0
jbuttonの行と列があり、各ボタンをクリックすると赤くなり、もう一度クリックすると元の色に戻ります。これまでのところ、私が書いたコードは次のとおりです。アクションリスナー
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); '内部クラスから参照されるローカル変数はfinalまたは実質的にfinalでなければならず、動作しません。 – May
finalとしてbtn1変数を定義します。 –
@pacoパネルp1はメインパネルの内側にあります。メインパネルでは、ここでbtn1変数を宣言しました。編集したビューの質問を参照してください。ラインbtn1 [i] [j] .setBackground(Color.RED);まだ動作していません。 – May