在JavaFX中使用FXML和Controller创建场景

时间:2017-10-03 13:16:15

标签: java javafx fxml scenebuilder

我在SceneBuilder中创建了一个9x9 GridPane,我希望为每个单元格添加单独的TextFields。我确定还有其他方法可以创建像这样的大表,但我并不是在寻找一种不同的方法(这是我学习经历的一部分)。我不想在FXML / SceneBuilder中添加TextFields;我想在数组中跟踪它们,以便我可以访问它们各自的值,因此我想在Controller中一次创建一个,然后将它们添加到数组以及{{1}的每个单元格中。 }。

以下是我的控制器尝试添加GridPane的部分(我尝试在将它们添加到数组之前创建它们):

TextFields

我没有在运行时之前收到错误,并且场景没有更新。

编辑:我查看了@FXML private GridPane gridPane; private TextField myTextField[][] = new TextField[9][9]; . . . @Override public void initialize(URL url, ResourceBundle rb) { for (int i = 0; i < 9; ++i){ for (int j = 0; j < 9; ++j){ TextField tempTextField = new TextField(); Font myFont = new Font("System",38); tempTextField.setFont(myFont); tempTextField.setText(i + ", " + j); tempTextField.setPrefSize(70, 70); myTextField[i][j] = tempTextField; gridPane.add(tempTextField,i,j); System.out.println("TextField " +i+j+" Created!"); } } } 并注意到我在

处获得了空指针
StackTrace

FXML文件

gridPane.add(tempTextField,i,j);

1 个答案:

答案 0 :(得分:2)

尝试在控制器中实现javafx.fxml.Initializable接口,并将setGrid()逻辑移动到随附的方法。