JavaFX控制器未初始化UI字段

JavaFX控制器未初始化UI字段,java,javafx,Java,Javafx,我正在通过Scene Builder开发一个JavaFX项目。 我创建了一个相当长的FXML文件(我只报告了一个片段)和相关的控制器。此外,我还编写了我的应用程序类: public class Main extends Application { @Override public void start(Stage stage) { Parent root; try { root = FXMLLoader.load(getCl

我正在通过Scene Builder开发一个JavaFX项目。 我创建了一个相当长的FXML文件(我只报告了一个片段)和相关的控制器。此外,我还编写了我的应用程序类:

public class Main extends Application {
    @Override
    public void start(Stage stage) {
        Parent root;
        try {
            root = FXMLLoader.load(getClass().getResource("myfxml.fxml"));
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        Scene scene = new Scene(root);

        stage.setTitle("Popolamento dati Ambasciata");
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
FXML:

}

应用程序正确启动并调用事件处理程序,但在访问TextField objectname时,它为null。
我哪里做错了?

您应该使用
fx:id
属性,而不是
id

如果您查看文档:

将fx:id值指定给元素将在文档的命名空间中创建一个变量,该变量稍后可由变量取消引用属性引用

注意:您仍然可以使用
id
属性:

此外,如果对象的类型定义了“id”属性,则该值也将传递给objects setId()方法

因此,在你的情况下:

<Button fx:id="addobject" ... />
<TextField fx:id="objectname" ... />

public class FXController {

@FXML Button addobject;
@FXML TextField objectname;

@FXML
public void addobject() {
    objectname.getText();
}
}
<Button fx:id="addobject" ... />
<TextField fx:id="objectname" ... />