GWT在事件触发器后延迟操作

GWT在事件触发器后延迟操作,gwt,Gwt,我想让用户点击一个按钮,然后他们会看到一个“Toast”消息弹出窗口,它会逐渐消失,然后按钮点击执行的操作应该会发生。最好的方法是什么?我应该在捕获click事件时触发计时器并让它超时(在toast显示时),然后调用处理代码,还是可以使用事件处理中的内置延迟机制? 我不想让我的吐司参与事件处理如果您使用的是弹出式面板,您可以使用弹出式面板上的addCloseHandler,并从这里调用按钮调用的方法 popUpPanel.addCloseHandler(new CloseHandler<P

我想让用户点击一个按钮,然后他们会看到一个“Toast”消息弹出窗口,它会逐渐消失,然后按钮点击执行的操作应该会发生。最好的方法是什么?我应该在捕获click事件时触发计时器并让它超时(在toast显示时),然后调用处理代码,还是可以使用事件处理中的内置延迟机制?
我不想让我的吐司参与事件处理

如果您使用的是弹出式面板,您可以使用弹出式面板上的addCloseHandler,并从这里调用按钮调用的方法

popUpPanel.addCloseHandler(new CloseHandler<PopupPanel>(){
@Override
public void onClose(CloseEvent<PopupPanel> event) {
    // TODO Do the closing stuff here

}
});
popupanel.addCloseHandler(新的CloseHandler(){
@凌驾
公共void onClose(CloseEvent事件){
//在这里做收尾工作
}
});

因此,当PopupPanel消失并且close事件触发时,您可以在那里发挥您的魔力。

如果我真的遵循您的要求,以下代码应该可以:

//无论实际实现是什么,“Toast”的接口
公共接口吐司
{
无效打开(字符串消息);
void closeFadingAway();
}
//呼叫码
公共类客户端代码
{
私有静态final int myDelay=1000;//1秒(毫秒)
私人吐司;
void onMyAction()
{
myToast.open(“正在处理您的操作…”);
Scheduler.get().scheduleFixedDelay(新的RepeatingCommand()命令)
{
@凌驾
公共布尔执行()
{
myToast.closeFadingAway();
性能();
return false;//return false停止“重复”=只执行一次
}
},myDelay);
}
无效性能()
{
//做些有趣的事
}
}
现在,如果您真的想在用户按下祝酒词中的某个按钮时中断操作,则情况就不同了。

非常好的回答:)干杯