我是Java的大三学生,在其他帖子中找不到答案后,决定寻求帮助。 目标:需要在JavaFx应用程序中的initialize()方法中使用以下控制器代码运行:
package myAlgo;
import javafx.fxml.FXML;
import javafx.scene.control.TextField;
import javafx.concurrent.Task;
public class Controller{
@FXML
String connectionstatus="";
@FXML
private Connection connection;
@FXML
private TextField connectionStatusTextField;
@FXML
Task<Void> task;
@FXML
public void initialize() {
connection = new Connection();
checkConectionStatus();
}
@FXML
public void checkConectionStatus() {
task = new Task<Void>() {
@Override protected Void call() throws Exception {
while(!isCancelled()) {
connectionstatus=String.valueOf(connection.checkConnection());
connectionStatusTextField.setText(connectionstatus);
Thread.sleep(3000);
}
return null;
}
};
Thread th = new Thread(task);
th.setDaemon(true);
th.start();
}
结果inialize方法中的Task开始运行,但立即停止。
在调试之后,在connection.checkConnection()类所在行的“返回”行中的run()方法中,从FutureTask.class中的FutureTask.class获取了java.lang.NullPointerException:
public boolean checkConnection() {
return client.isConnected();
}
P.S。 如果从其他方法运行它-任务正在正常运行。 在通过(javafx.concurrent.Service)的服务进行封装后,尝试运行,但是得到了相同的结果。