javaFX Task

崔钢 发布于 2010/10/09 17:35
阅读 1K+
收藏 1

javaFx 的task(javafx.async包下)是在fx中使用线程的一种机制。但是比较奇怪的是,它给了一个JavaTaskBase的类实现了Task,但是这个东西不能直接支持javaFx。比较郁闷。要想直接用javaFx来实现Task又比较麻烦。所以折中处理了一下。

首先定义一个java接口:

 

package test.task;

/**
 *
 * @author clark
 */
public interface MyTask {

    public void execute();
}

 

然后定义java的对象:

 

package test.task;

import javafx.async.RunnableFuture;

/**
 *
 * @author clark
 */
public class JavaTask implements RunnableFuture {

    private MyTask task;

    public MyTask getTask() {
        return task;
    }

    public void setTask(MyTask task) {
        this.task = task;
    }

    @Override
    public void run() throws Exception {
        task.execute();
    }
}

 

最后实现JavaTaskBase:

 

package test.task;

import javafx.async.JavaTaskBase;
import javafx.async.RunnableFuture;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.lang.UnsupportedOperationException;

/**
 * @author clark
 */
public class Test extends JavaTaskBase {

    override protected function create(): RunnableFuture {
        var task = JavaTask {};
        task.setTask(MyTask {
            override public function execute(): Void {
                while (true)
                    println("--{new Date()}--");
            }
        });

        return task;

    }

}

 

下面是调用部分:(片段)

 

 Button {
                        text: "get history"
                        effect: shadow
                        action: function() {                           
                            test.task.Test {
                                onDone: function() {
                                    println('--done--');
                                }
                            }.start()
                        }
                    }

这样就可以执行javaFX的Task任务了。但总是感觉怪怪的。有高手请指正。

 

加载中
0
囧南风囧
囧南风囧

帮顶,楼主难得的JavaFX高手哦!膜拜,膜拜

返回顶部
顶部