我的控制器类为:
public class Empty_pageController implements Initializable,Runnable{
将所有ID声明为:
@FXML
private TextField IDno;
@FXML
private TextField branch;
...
现在这些是我的clear()函数,用于清除FXML表单:
public void clear(ActionEvent Event){
IDno.clear();
branch.clear();
bookname.clear();
ID.clear();
author.clear();
address.clear();
name.clear();
year.clear();
}
然后我有另一个类(在同一包中)调用这些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)
在这里看到一些解决方案后我尝试了什么: 我通过以下代码传递了contructor类的对象:
s.doInBackground(this);
,然后在另一个类的方法中进行相应的更改:
public void doInBackground(Empty_pageController E) throws InterruptedException {
然后我使用以下语句致电
:E.clear(null);
我遇到了相同的错误,不知道我要去哪里错了... ??
编辑:我的FXML文件 Empty_page.fxml
答案 0 :(得分:1)
因此,当JavaFX最初初始化控制器Empty_pageController
时。它将注入
@FXML
private TextField IDno;
@FXML
private TextField branch;
基于该元素fx:id
和您的FXML
标签。
如果您自己构造该Controller,则不会构造那些组件,这就是为什么您看到NullPointerException的原因。
如果要清除组件,则需要使用JavaFX创建的控制器实例。