Javafx并发和gui-update

时间:2015-06-10 13:46:59

标签: user-interface asynchronous javafx task overlay

我要做的是以下内容: 我想在做背景工作之前淡入覆盖屏幕,并在任务完成时淡出覆盖屏幕。

无论如何,java执行后台任务requestService.doRequest,之后它会淡入淡出屏幕。所以目前的订单如下:

  • 任务
  • 淡入
  • 淡出

虽然它应该是:

  • 淡入
  • 任务
  • 淡出

我想我尝试了所有可能的线程,任务,服务等配置。

那么如何正确地更新gui就像我试图实现的那样?

Controller.java

public void doRequest(Request r) {
    Task<Float> t = new Task<Float>() {

        @Override
        protected Float call() throws Exception {
            try {
                updateProgress(.5f, 1);
                requestService.doRequest(r);
            } catch(Exception e) {
                badge.setVisible(true);
                badge.setText(e.getMessage());
            } finally {
                updateProgress(0f, 1);
            }
            return null;
        }
    };

    overlay.opacityProperty().bind(t.progressProperty());
    overlay.opacityProperty().addListener((obs, o, n) -> System.out.println(n));
    t.run();

}

顺便说一句:如果我看到叠加opacityProperty的更新,可以看到属性以正确的顺序更新,但gui刷新似乎挂起。

0 个答案:

没有答案