在javafx中无法访问的按钮处理程序中的变量

时间:2017-07-24 06:24:57

标签: java javafx

以下是我的代码,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.");
        }
    });
}

1 个答案:

答案 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.");
        }
    });
}