GWT在事件触发后延迟动作

时间:2013-03-27 14:04:56

标签: gwt

我想让用户单击一个按钮,然后他们会看到一个“Toast”消息弹出窗口,它会消失,然后按钮点击执行的操作就会发生。做这个的最好方式是什么?我应该在捕获click事件时触发Timer并让它超时(当显示toast时)然后调用处理代码或者我可以使用事件处理中的内置延迟机制吗? 我不希望我的干杯在事件处理中全部参与

2 个答案:

答案 0 :(得分: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
    }
}

现在,如果你真的想要在用户按下吐司中的某个按钮时能够中断动作,那么这是另一回事。

答案 1 :(得分:0)

如果您使用的是弹出式面板,则可以使用弹出式面板上的addCloseHandler,然后从此处调用按钮调用的方法。

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

}
});

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