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
。)
我想在 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
。)