Java 根据选择的切换按钮禁用网格窗格中的某些切换按钮

Java 根据选择的切换按钮禁用网格窗格中的某些切换按钮,java,javafx,Java,Javafx,我有一个GridPane(在JavaFX中),其中填充了如下切换按钮: int grootte = 4; ToggleButton letter[][] = new ToggleButton[grootte][grootte]; for (int i = 0; i < grootte; i++){ for (int j = 0; j < grootte; j++){ final int x = i; final in

我有一个GridPane(在JavaFX中),其中填充了如下切换按钮:

int grootte = 4;

ToggleButton letter[][] = new ToggleButton[grootte][grootte];

for (int i = 0; i < grootte; i++){
        for (int j = 0; j < grootte; j++){
            final int x = i;
            final int y = j;
            letter[x][y] = new ToggleButton(letters.get("a"));
            letter[x][y].setId(x + "" + y);
            letter[x][y].setMinSize(50, 50);
            gp.add(letter[x][j], i, j);
            letter[x][y].setOnAction(e -> btnPress(letter[x][y]));
        }
    }
}
因此,我有一个网格窗格,其中填充了显示“a”的4x4切换按钮

我想做的是,当我选择一个ToggleButton时,我只能选择下一个ToggleButton,如果它在水平、垂直和对角方向都紧挨着它


我已经通过给每个按钮分配一个ID来获得按钮的位置,但我不确定从这里到哪里。

您可以执行以下操作:

letter[x][y].selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
    if (isNowSelected) {
        updateToggleButtonStates(letter, x, y);
    } else {
        // not sure if you want to do something when buttons are deselected?
    }
});

private void updateToggleButtonStates(切换按钮[][]按钮,int x,int y){
对于(int i=0;i1 | | Math.abs(j-y)>1);
}
}
}

(因此,不在相邻列或同一列中,或不在相邻行或同一行中的按钮将被禁用;其余按钮将被启用。)

向按钮添加侦听器,并根据按下的内容执行特定操作这正是我需要的!非常感谢你!
letter[x][y].selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
    if (isNowSelected) {
        updateToggleButtonStates(letter, x, y);
    } else {
        // not sure if you want to do something when buttons are deselected?
    }
});
private void updateToggleButtonStates(ToggleButton[][] buttons, int x, int y) {
    for (int i = 0 ; i < buttons.length ; i++) {
        for (int j = 0 ; j < buttons[i].length ; j++) {
            buttons[i][j].setDisable(Math.abs(i-x) > 1 || Math.abs(j-y) > 1);
        }
    }
}