2012-06-06 32 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(); 
        } 
       } 
      }); 
     } 
    });