0

每次单击按钮并在处理完成后隐藏屏幕时,我都会尝试创建一个加载屏幕(在本例中为弹出面板)。

但问题是加载屏幕永远不会出现。

如果我删除隐藏加载屏幕的行:

   //HIDES THE LOADING POPUP
closeLoadingFilter();

加载屏幕出现,但直到所有处理完成。(不是在我单击按钮后立即)。

我认为按钮处理程序中的所有处理必须在屏幕上出现任何内容之前完成。因此,当处理完成时,弹出窗口在屏幕上显示之前被隐藏。

我怎么解决这个问题。顺便说一句,处理过程中没有异步调用,一切都是内存处理和使用内存信息绘制谷歌可视化

谢谢你们

这是代码:

buttonFilter.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {


                            //SHOWS THE LOADING POPUP

            showLoadingFilter();


                            //ALL THIS TAKES AROUND 4 SECONDS
                            //THERE IS NO ASYNC CALL
                            //EVERYTHING IS IN-MEMORY PROCESSING
                            //AND DRAWING OF GOOGLE VISUALIZATION


            listValues.clear();
            listFields.clear();
            CreateListFiltersSingle();
            GetFilterSingleOptions();
            RunFilter(dashboardProductos);
            DrawVisualizations2();


                            //HIDES THE LOADING POPUP
            closeLoadingFilter();

        }

    })


public void showLoadingFilter() {

    popupFilterLoading.clear();

    popupFilterLoading.add(new Label("Please wait"));

    popupFilterLoading.setGlassEnabled(true); 

    popupFilterLoading.center(); 

    isFilterLoading = true;

    popupFilterLoading.show();

}

public void closeLoadingFilter() {
    if (isFilterLoading) {

        popupFilterLoading.hide();
        isFilterLoading = false;

    }

}
4

1 回答 1

0

您可以使用调度程序异步调用方法。下面的代码可能会解决您的问题。

submit.addClickHandler(new ClickHandler() {
          public void onClick(ClickEvent event) {
              showLoadingFilter();
              // Waits for the loading pop-up to be displayed before starting anything
              Scheduler.get().scheduleDeferred(new ScheduledCommand() {
                @Override
                public void execute() {
                  listValues.clear();
                  listFields.clear();
                  CreateListFiltersSingle();
                  GetFilterSingleOptions();
                  RunFilter(dashboardProductos);
                  DrawVisualizations2();
                  closeLoadingFilter();
                }
              });
          }
于 2013-11-06T12:43:39.317 回答