我正在尝试操作由Scene Builder生成的TextField中的文本。我的控制器看起来像这样:
@FXML
private TextField textDescr;
public void initialize(URL fxmlFileLocation, ResourceBundle resources) {
textDescr = new TextField();
assert textDescr != null : "fx:id=\"textDescr\" was not injected: check your FXML file 'provingGroundsUI.fxml'.";
Game.mainFSM.enter();
}
public void setText(String s) {
// TODO Auto-generated method stub
textDescr.setText(s);
}
我收到NullPointerException。我曾尝试使用和不使用textDescr = new TextField();
部分的机器人。我不太明白......我认为JavaFX在程序开始时初始化了所有的UI变量。
答案 0 :(得分:1)
您的控制器类应实现Initializable
@FXML
注释显示该字段将由JavaFX初始化。因此,请确保删除new TextField
内容。
您确定在FXML中分配了此控制器吗?
答案 1 :(得分:1)
@FXML
private Text textDescr;
private StringProperty textProperty = new SimpleStringProperty();
@FXML
void initialize() {
assert textDescr != null : "fx:id=\"textDescr\" was not injected: check your FXML file 'TestView.fxml'.";
textDescr.textProperty().bind(textProperty);
}
public ReadOnlyStringProperty textProperty(){
return textProperty;
}