2 回答
TA贡献1982条经验 获得超2个赞
这不是关于数组,而是关于循环计数器。由于i和j不是最终的(它们由循环递增),因此它们不能在匿名类中使用。
diceLayout[i][j].setClicked(true);
^
error here (and if you fixed that, it would appear at j)
您可以将 提取Die到局部变量中,因此只能访问i和j在侦听器之外:
private void addDiceListeners()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
Die die = diceLayout[i][j];
die.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
die.setClicked(true);
}
});
}
}
}
TA贡献1827条经验 获得超8个赞
这里:
diceLayout[i][j].setClicked(true); //Error Occurs here
你的问题是 i 和 j。这些是来自封闭方法的局部变量。当然:那些是循环计数器,因此您不能将它们设为最终。
这应该做:
for(int i = 0; i<4; i++) {
for(int j = 0; j<4; j++) {
final int finalRow = i;
final int finalColumn = j;
然后使用您刚刚创建的两个最终副本而不是 i 和 j。或者,您按照另一个答案的建议进行操作并获取Die要使用的实际对象(作为最终对象)。
添加回答
举报