如何从JavaFx中的Task发送int?

时间:2015-10-14 13:18:51

标签: java multithreading javafx

我尝试从Task发送一个int,但方法updateMessage只允许String。我试图转换.toString(),但IDE发送错误“无法解析符号”。

有什么办法吗?为什么我不能在.toString()内使用Task

         bkgTimer = new Service<Void>() {
            @Override
            protected Task<Void> createTask() {
                return new Task<Void>() {
                    @Override
                    protected Void call() throws Exception {
                        int count = 0;
                        while (play){
                            count++;
                            updateMessage(count.toString());//Cannot resolve symbol
                            if (isCancelled()) {
                                break;
                            }
                            Thread.sleep(1000);
                        }
                        return null;
                    }
                };
            }
        };

        bkgTimer.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
            @Override
            public void handle(WorkerStateEvent event) {
               chronoLabel.textProperty().unbind();
            }
        });
        chronoLabel.textProperty().bind(bkgTimer.messageProperty());

提前致谢..

1 个答案:

答案 0 :(得分:1)

编译错误与您在Task内的事实无关。问题是您不能从基本类型调用方法,例如intdoubleboolean等。只有引用类型(即对象)有方法,类可以定义静态方法。

相反,请使用Integer类中的静态toString(int)方法:

updateMessage(Integer.toString(count));