JavaFX服务启动时的触发事件

时间:2014-06-17 06:58:30

标签: javafx javafx-2 javafx-8

我想在Service启动时执行Java代码,但我找不到合适的Java方法:

service.setOnRunning(new EventHandler<WorkerStateEvent>()
{
    @Override
    public void handle(WorkerStateEvent t)
    {
         Start some logic
    }
});

service.setOnSucceeded(new EventHandler<WorkerStateEvent>()
{
    @Override
    public void handle(WorkerStateEvent t)
    {
         Stop some logic
    }
});

如何在启动Service时只调用一次Java Method?

1 个答案:

答案 0 :(得分:2)

您可以轻松控制Service开始时间,因此没有特殊方法。

只需将您想要在开始时运行的任何代码添加到call方法:

private class MyService extends Service<Void> {

    @Override
    protected Task<Void> createTask() {
        return new Task<Void>() {
            @Override
            protected Void call() throws Exception {
                // "onStart" code
                System.out.println("Service started");
                // actual service code

                //do stuff
                return null;
            }
        };
    }
}