Я немного младше в Java и после не нашел ответов в других постах, поэтому решил обратиться за помощью.
Цель: необходимо запустить внутри метода initialize () в приложении JavaFx с приведенным ниже кодом контроллера:
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, но она немедленно останавливается.
После отладки получено исключение java.lang.NullPointerException от FutureTask.class в методе run () в строке класса connection.checkConnection () в строке «return» в:
public boolean checkConnection() {
return client.isConnected();
}
P.S.
Если запустить его из другого метода - Задача выполняется без проблем.
Пробовал работать после инкапсуляции службой из (javafx.concurrent.Service), но получил тот же результат.