【问题标题】:GWT - Browser window resized handlerGWT - 浏览器窗口大小调整处理程序
【发布时间】:2011-04-17 10:53:39
【问题描述】:

我正在开发一个在画布上呈现文本的 GWT 应用程序。每当调整浏览器窗口的大小时,我都想调整画布的大小。问题是如果我使用 Window.addResizeHandler,每次调整大小的渲染过程都会很慢。所以我需要一种方法来调整画布的大小,只有当用户在完成调整大小后释放鼠标按钮时。有什么办法吗?

【问题讨论】:

    标签: gwt


    【解决方案1】:

    您可以添加延迟,以便仅在窗口未调整大小若干毫秒后才处理调整大小:

    Window.addResizeHandler(new ResizeHandler() {
    
      Timer resizeTimer = new Timer() {  
        @Override
        public void run() {
          doComplexLayoutCalculations();
        }
      };
    
      @Override
      public void onResize(ResizeEvent event) {
        resizeTimer.cancel();
        resizeTimer.schedule(250);
      }
    });
    

    【讨论】:

    • 感谢 Riley,您的解决方案非常完美。
    • 实际上,您不需要cancel 计时器:调用schedule 将始终在重新安排之前取消正在运行的计时器。
    • 为了获得更好的调整大小反馈,我倾向于限制事件。我不会在计时器已经运行时取消它,这样每 250 毫秒就会更新一次布局。这会产生更好的效果,否则只有在您停止调整大小时才会调整大小。
    • 我建议你使用 Scheduler.get().scheduleDeferred 而不是 timer
    【解决方案2】:
    Window.addResizeHandler(new ResizeHandler() {
    
        @Override
        public void onResize(ResizeEvent event) {
            Scheduler.get().scheduleDeferred(
                    new Scheduler.ScheduledCommand() {
                        public void execute() {
                            // layout stuff
                        }
                    });
        }
    
    });
    

    【讨论】:

      猜你喜欢
      • 2012-05-20
      • 2015-04-20
      • 2023-04-07
      • 2012-02-23
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多