2012-06-06 34 views
2

我如何从com.smartgwt.client.widgets.Window中取消关闭事件?我需要用户确认关闭窗口,我看到com.smartgwt.client.widgets.tab.events.TabClos​​e.widgets.tab.events.TabClos​​eClick类有一个取消方法来停止这个动作,我需要com.smartgwt.client.widgets .events.CloseClickHandler。我如何实现此功能?我如何从SmartGWT窗口取消关闭事件?

+1

CloseClickEvent上的kill()方法是否工作? – ModeEngage

+0

Nops,它不起作用,CloseClickEvent类没有方法kill():/ –

回答

1
public HandlerRegistration addCloseClickHandler(CloseClickHandler handler) 

处理该窗口的关闭按钮上的点击。默认实现隐藏窗口并返回false来取消冒泡。如果您想要执行其他操作,请覆盖此方法。

+0

我已经在Docs中看到过这个,但这不是问题......'handler'参数没有' cancel()'方法停止关闭动作,明白吗?我错了吗? –

+0

@JulioSampaio *覆盖这种方法,如果你想要采取其他行动* ..这意味着,覆盖它,并做任何你想要做的事 –

+0

好吧,但我没有看到取消关闭行动的方式,什么窗口的类我应该使用什么方法?你有没有用SmartGwt做过这样的事情? '@覆盖 \t公共HandlerRegistration addCloseClickHandler(CloseClickHandler处理){ \t \t \t \t SC.confirm( “关闭窗口?”,新BooleanCallback(){\t \t \t \t \t \t \t \t @覆盖 \t \t \t public void execute(布尔值){ \t \t \t \t if(value){ \t \t \t \t \t //如何取消关闭? \t \t \t \t} \t \t \t} \t \t}); \t \t //它应该返回什么? \t \t return super.addCloseClickHandler(handler); \t}' –

0

在你的窗口对象

myWindowObject.addCloseClickHandler(new CloseClickHandler() { 
      public void onCloseClick(CloseClickEvent event) { 

        //Do whatever 

        if(IHaveTOCancel){ 
          event.cancel(); 
        } 
       } 
      }); 
0

我发现,如果你不立即取消该事件(因为它在等待用户输入),则窗口关闭反正。如果您需要等待用户输入,这是我发现的工作。

window.addCloseClickHandler(new CloseClickHandler() { 
     @Override 
     public void onCloseClick(CloseClickEvent event) { 
      event.cancel(); 
      StringBuilder b = new StringBuilder(); 
      b.append("<BR>"); 
      b.append("Are you sure you want to close?"); 
      SC.ask("Close", b.toString(), new BooleanCallback() { 
       @Override 
       public void execute(Boolean value) { 
        if (value) { 
         window.close(); 
        } 
       } 
      }); 
     } 
    });