我正在尝试操作场景生成器生成的文本字段中的文本。我的 Controller 如下所示:
@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变量。
最佳答案
- 您的 FXML 怎么样?
- 在setText函数中操作textDescr有很多风险。最好使用绑定(bind)的 StringProperty:
@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;
}
关于JavaFX 场景构建器 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743688/