Java - 为 9x9 网格中的每个正方形添加背景

Java - Add background to every square in a 9x9 grid

我想在 JavaFX 中制作一个 9x9 的数独网格,如图中所示

知道如何以一种好的方式做到这一点吗?谢谢

编辑: 我成功了,但是代码看起来不太好。

private void addBackground(StackPane cell, int row, int col) {
    String[] colors = {"#b0cbe1", "#cbe183", "#e18398","#b0e183", "#b8778a", "#e198b0", "#b08398", "#cb98b0", "#e1b0cb"};
    if(row < 3) {
        if(col < 3) { 
            cell.setStyle("-fx-background-color: " + colors[0] + ";");
        } else if (col >= 3 && col < 6 ) {
            cell.setStyle("-fx-background-color: " + colors[1] + ";");
        } else{
            cell.setStyle("-fx-background-color: " + colors[2] + ";");
        }
    } else if (row >= 3 && row <6) {
        if(col < 3) { 
            cell.setStyle("-fx-background-color: " + colors[3] + ";");
        } else if (col >= 3 && col < 6 ) {
            cell.setStyle("-fx-background-color: " + colors[4] + ";");
        } else {
            cell.setStyle("-fx-background-color: " + colors[5] + ";");
        }
    } else {
        if(col < 3) { 
            cell.setStyle("-fx-background-color: " + colors[6] + ";");
        } else if (col >= 3 && col < 6 ) {
            cell.setStyle("-fx-background-color: " + colors[7] + ";");
        } else{
            cell.setStyle("-fx-background-color: " + colors[8] + ";");
        }
    }
}

您可以使用

而不是所有这些 if-else 结构
int colorIndex = 3 * (row / 3) + (col / 3);
cell.setStyle("-fx-background-color: " + colors[colorIndex] + ";");

注意row / 3是用整数除法计算的,所以当行在{0,1,2}时row / 3为0,当行在{3,4,5}时为1 , 当行在 {6, 7, 8} 中时为 2。 (所以 3 * (row / 3) 不等于 row。)