首页 > 解决方案 > 如何将我的二维数组填充为相同的值

问题描述

我希望网格上的所有按钮在每次单击时都从空白变为 X 到 O,然后又变回空白。它目前仅适用于数组中的第一个元素,因为 I 和 j 的值都是 0。我需要一个类似于我初始化按钮的循环吗?

我虽然两个嵌套的 for 循环是我需要添加的,但是我已经尝试过了,它已经奏效了。

有什么建议么?

标签: javajavafx

解决方案


您使用最终字段ij用于设置事件处理程序。如果您希望所有按钮都以相同的方式处理单击,则需要将事件处理程序注册到每个按钮。

由于您只能在循环内有效地访问最终变量,因此您需要制作循环变量的最终副本或简单地为Button.

final List<String> values = Arrays.asList("", "X", "O");

for(int i=0; i<btn.length; i++){
    for(int j=0; j<btn.length;j++){
        final Button button = new Button("");

        button.setOnAction(event -> {
            int valueIndex = values.indexOf(button.getText());
            button.setText(values.get((valueIndex+1) % values.size()));
        });
        // Initializing 2D buttons with values i,j
        btn[i][j] = button;                      
        button.setPrefSize(35, 40);
        gridPane.add(button, i, j);
        // button.setDisable(false);
    }
}

推荐阅读