我要做的是以下内容: 我想在做背景工作之前淡入覆盖屏幕,并在任务完成时淡出覆盖屏幕。
无论如何,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刷新似乎挂起。