如何用整数或字符串填充GridPane?我目前正在使用Sudoku GUI,但无法使用它。我已经知道用Java FX Label显示它是不可能的,因为它是java.fx.scene.control类。我需要以某种方式将sudoku值传递给GridPane中的相应坐标。
public class Controller {
GridPane sudokuGrid;
private Label[][] label = new Label[9][9];
public void generateButtonClicked(ActionEvent actionEvent) {
SudokuBoard board = new SudokuBoard();
BacktrackingSudokuSolver solver = new BacktrackingSudokuSolver();
solver.fillBoard(0, 0, board);
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
label[i][j] = String.valueOf(board.getDigit(i, j).getNum());
sudokuGrid.add(???, i, j);
}
}
}
答案 0 :(得分:2)
校正
我已经知道用Java FX Label显示它是不可能的,因为它是java.fx.scene.control类。
不是这样,标签用于显示值。
解决方案
在循环中,创建一个标签并将其放在网格中:
label[i][j] = new Label(String.valueOf(board.getDigit(i, j).getNum()));
sudokuGrid.add(label[i][j], i, j);
其他问题的答案
你知道如何在每次填充后清除网格的内容吗?每按一下按钮
,我都会得到数字
仅将标签添加到网格一次(创建网格时)。将标签添加到网格后,无需再次添加标签。因此,使用上面的代码在循环中运行并初始化您的网格。
初始化完成后,只需在需要时更新标签文本。例如,单击“生成”按钮时:
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
label[i][j].setText(
String.valueOf(board.getDigit(i, j).getNum())
);
}
}
如果要显示空白标签,只需将其文本设置为null或空字符串:
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
label[i][j].setText(null);
}
}
但是我没有为每个点击按钮创建一个新网格,因为它是在fxml文件中声明的
您的FXML控制器可以使用initialize()方法,使用它在网格中创建标签。