Java 根据选择的切换按钮禁用网格窗格中的某些切换按钮
我有一个GridPane(在JavaFX中),其中填充了如下切换按钮: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
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);
}
}
}