javafx java.lang.NullPointerException 控制器 class

javafx java.lang.NullPointerException controller class

我的控制器 class 为:

public class Empty_pageController implements Initializable,Runnable{

将所有 ID 声明为:

@FXML 
private TextField IDno;
@FXML 
private TextField branch;
...

现在这些是我清除 FXML 表单的 clear() 函数:

public void clear(ActionEvent Event){
    IDno.clear();
    branch.clear();
    bookname.clear();
    ID.clear();
    author.clear();
    address.clear();
    name.clear();
    year.clear();
}

然后我有另一个 class(在同一个包中)调用这些 clear():

new Empty_pageController().clear(null);

这些给了我以下错误:

Exception in thread "Thread-4" java.lang.NullPointerException
at library.Empty_pageController.clear(Empty_pageController.java:147)
at library.server.doInBackground(server.java:45)
at library.Empty_pageController.run(Empty_pageController.java:84)
at java.lang.Thread.run(Thread.java:748)

我在这里看到一些解决方案后尝试的方法: 我通过以下代码传递了构造函数 class 的对象:

s.doInBackground(this);

然后在另一个class的方法中进行了相应的更改:

public void doInBackground(Empty_pageController E) throws InterruptedException {

然后我使用这些语句调用:

E.clear(null);

我遇到了同样的错误不知道我哪里出错了....?

编辑:我的 FXML 文件 Empty_page.fxml

因此,当 JavaFX 最初初始化您的控制器时 Empty_pageController。它将注入

@FXML 
private TextField IDno;
@FXML 
private TextField branch;

基于该元素 fx:id 和您的 FXML 标签。

如果您自己构建控制器,则不会构建这些组件,这就是您看到 NullPointerException 的原因。

如果您想清除组件,您需要使用 JavaFX 创建的控制器实例。