【发布时间】:2011-04-17 10:53:39
【问题描述】:
我正在开发一个在画布上呈现文本的 GWT 应用程序。每当调整浏览器窗口的大小时,我都想调整画布的大小。问题是如果我使用 Window.addResizeHandler,每次调整大小的渲染过程都会很慢。所以我需要一种方法来调整画布的大小,只有当用户在完成调整大小后释放鼠标按钮时。有什么办法吗?
【问题讨论】:
标签: gwt
我正在开发一个在画布上呈现文本的 GWT 应用程序。每当调整浏览器窗口的大小时,我都想调整画布的大小。问题是如果我使用 Window.addResizeHandler,每次调整大小的渲染过程都会很慢。所以我需要一种方法来调整画布的大小,只有当用户在完成调整大小后释放鼠标按钮时。有什么办法吗?
【问题讨论】:
标签: gwt
您可以添加延迟,以便仅在窗口未调整大小若干毫秒后才处理调整大小:
Window.addResizeHandler(new ResizeHandler() {
Timer resizeTimer = new Timer() {
@Override
public void run() {
doComplexLayoutCalculations();
}
};
@Override
public void onResize(ResizeEvent event) {
resizeTimer.cancel();
resizeTimer.schedule(250);
}
});
【讨论】:
cancel 计时器:调用schedule 将始终在重新安排之前取消正在运行的计时器。
Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(ResizeEvent event) {
Scheduler.get().scheduleDeferred(
new Scheduler.ScheduledCommand() {
public void execute() {
// layout stuff
}
});
}
});
【讨论】: