Javafx - запуск задачи из метода инициализации немедленно останавливается - PullRequest
0 голосов
/ 20 января 2019

Я немного младше в 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), но получил тот же результат.

...