Javafx-从初始化方法运行任务立即停止

时间:2019-01-20 15:36:15

标签: javafx concurrency task

我是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)的服务进行封装后,尝试运行,但是得到了相同的结果。

0 个答案:

没有答案