javafx java.lang.NullPointerException控制器类

时间:2018-09-07 17:27:48

标签: java javafx nullpointerexception textfield fxml

我的控制器类为:

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

1 个答案:

答案 0 :(得分:1)

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

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

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

如果您自己构造该Controller,则不会构造那些组件,这就是为什么您看到NullPointerException的原因。

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