GWT onResize&;鼠标移动

GWT onResize&;鼠标移动,gwt,Gwt,我有一个窗口resizeHandler,它工作正常。除了我只对窗口的最终尺寸感兴趣,换句话说,我对释放鼠标按钮时窗口的尺寸感兴趣。有没有办法听窗口鼠标事件 我已经写了一段代码来实现我的目标,但是我更喜欢一些更明显的东西resizeRequestId是一个字段: private void processResize(){ 最终计时器=新计时器(){ 最终尺寸WindowsSize=GetWindowDimension(); final int requestId=++resizeRequestId

我有一个窗口
resizeHandler
,它工作正常。除了我只对窗口的最终尺寸感兴趣,换句话说,我对释放鼠标按钮时窗口的尺寸感兴趣。有没有办法听窗口鼠标事件

我已经写了一段代码来实现我的目标,但是我更喜欢一些更明显的东西<代码>resizeRequestId是一个字段:

private void processResize(){
最终计时器=新计时器(){
最终尺寸WindowsSize=GetWindowDimension();
final int requestId=++resizeRequestId;
@凌驾
公开募捐{
最终布尔值isLatestRequest=requestId==resizeRequestId;
如果(isLatestRequest){
//用WindowsSize做些什么
}
}
};
时间表(100);
}

浏览器不会传递发生在页面外部的事件,并且窗口大小调整将计入页面外部。也就是说,您仍然可以获得一个钩子,用于调整整个浏览器窗口的大小:

Window.addResizeHandler(new ResizeHandler() {
  public void onResize(ResizeEvent event) {
    //get, process window resize behavior
  }
});

对于某些浏览器和某些调整大小的浏览器,随着鼠标的移动,您将获得许多事件,而对于其他浏览器,您将只获得完整的事件。例如,在firefox中,角落中的调整大小手柄会发送所做的每项更改,而侧边只会在用户释放鼠标后处理每次发送。最小化和最大化窗口也会导致一个事件。

浏览器不会传递发生在页面外部的事件,窗口大小调整将计入页面外部。也就是说,您仍然可以获得一个钩子,用于调整整个浏览器窗口的大小:

Window.addResizeHandler(new ResizeHandler() {
  public void onResize(ResizeEvent event) {
    //get, process window resize behavior
  }
});
对于某些浏览器和某些调整大小的浏览器,随着鼠标的移动,您将获得许多事件,而对于其他浏览器,您将只获得完整的事件。例如,在firefox中,角落中的调整大小手柄会发送所做的每项更改,而侧边只会在用户释放鼠标后处理每次发送。最小化和最大化窗口也会导致单个事件。

科林是对的

此外,如果您在“调整大小”时进行大量计算(例如forceLayout),最好添加一个计时器。这样,计算将每…10秒触发一次

final Timer resizeTimer = new Timer() {
    @Override
    public void run() {
        mainPanel.forceLayout();
    }
};
Window.addResizeHandler(new ResizeHandler() {
    public void onResize(ResizeEvent event) {
        int height = event.getHeight();
        mainPanel.setHeight(height + "px");
        resizeTimer.cancel();
        resizeTimer.schedule(100);
    }
});
就是这样,科林是对的

此外,如果您在“调整大小”时进行大量计算(例如forceLayout),最好添加一个计时器。这样,计算将每…10秒触发一次

final Timer resizeTimer = new Timer() {
    @Override
    public void run() {
        mainPanel.forceLayout();
    }
};
Window.addResizeHandler(new ResizeHandler() {
    public void onResize(ResizeEvent event) {
        int height = event.getHeight();
        mainPanel.setHeight(height + "px");
        resizeTimer.cancel();
        resizeTimer.schedule(100);
    }
});

就是这样

Colin,大小是我自己的brew…我没有使用GXT。哦,当你说窗口时,你是说整个浏览器窗口?我会相应地更新我的答案…科林,谢谢,这正是我在我的应用程序中跟踪窗口大小的方式。谢谢你解释不同的浏览器行为。科林,大小是我自己的brew…我没有使用GXT。哦,当你说窗口时,你是说整个浏览器窗口?我会相应地更新我的答案…科林,谢谢,这正是我在我的应用程序中跟踪窗口大小的方式。感谢您解释不同的浏览器行为。