2013-03-27 71 views
0

我想要用户单击一个按钮,然后他们将看到一个“Toast”消息弹出窗口,该窗口消失,然后按钮单击执行的动作应该会发生。做这个的最好方式是什么?我应该触发一个计时器捕捉点击事件,并让它超时(当吐司被显示时),然后调用处理代码或在事件处理中有任何内置延迟机制时,我可以使用? 我不想让我的烤面包在事件处理中参与其中GWT在事件触发后延迟动作

回答

1

如果我真的按照你的要求,下面的代码应该做的:

// interface of the "Toast" no matter what the implementation actually is 
public interface Toast 
{ 
    void open(String message); 
    void closeFadingAway(); 
} 

// calling code 
public class ClientCode 
{ 
    private static final int myDelay = 1000; // 1 second in millis 
    private Toast myToast; 

    void onMyAction() 
    { 
     myToast.open("Your action is being handled..."); 
     Scheduler.get().scheduleFixedDelay(new RepeatingCommand() 
     { 
      @Override 
      public boolean execute() 
      { 
       myToast.closeFadingAway(); 
       performAction(); 
       return false; // return false to stop the "repeating" = executed only once 
      } 
     }, myDelay); 
    } 

    void performAction() 
    { 
     // do something interesting 
    } 
} 

现在,如果你真正的意思是能够中断的动作,当用户在祝酒按下一些按钮,这是一个不同的故事。

+0

优秀答案:)干杯 – MayoMan 2013-03-28 09:44:57

0

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

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

} 
}); 

所以当PopupPanel消失,关闭事件触发你可以在那里做你的魔法。