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 创建的控制器实例。
我的控制器 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 创建的控制器实例。