以下是我的代码,i
中的变量circles[0][i]
无法访问。
有人可以解释为什么以及如何解决这个问题吗?
Button[] buttons=new Button[b.getRow()];
int i=0;
GridPane buttonsPane=new GridPane();
for(i=0;i<b.getRow();i++)
{
buttons[i]=new Button("Row"+(i+1));
buttonsPane.addColumn(i+1, buttons[i]);
buttons[i].setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event)
{
circles[0][i].text.setText("Clicked.");
}
});
}
答案 0 :(得分:2)
您正在尝试从内部作用域(method-local-anonymous-inner-class)访问变量 - 它必须声明为final。
你可以这样做:
for(i=0;i<b.getRow();i++)
{
buttons[i]=new Button("Row"+(i+1));
buttonsPane.addColumn(i+1, buttons[i]);
final index = i;
buttons[i].setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event)
{
circles[0][index].text.setText("Clicked.");
}
});
}