2011-08-26 77 views
0

我使用Google Web Toolkit Incubator的SliderBar小部件。默認情況下,這個小部件監聽一些鍵盤事件,例如左箭頭。我想知道是否有辦法避免小部件監聽這些事件。GWT - 避免收聽活動

我使用UiBinder並嘗試使用函數unsinkEvents,但沒有任何反應。以下是代碼片段:

@UiField(provided = true) SliderBar slbRotate;

public NewViewImpl() { 
    slbRotate = new SliderBar(-180,180); 
    slbRotate.setStepSize(10); 
    slbRotate.setCurrentValue(0);  
    slbRotate.setWidth("478px"); 
    slbRotate.setHeight("22px");    
    slbRotate.unsinkEvents(Event.KEYEVENTS); 
    initWidget(binder.createAndBindUi(this)); 

} 

我還在unsinkEvents函數的參數中使用了KeyCodes.KEY_LEFT,但也不起作用。

謝謝。

回答

0

隨着

unsinkEvents 

功能。

我創建了一個簡單的例子,顯示基礎:

import com.google.gwt.user.client.Event; 
import com.google.gwt.user.client.Window; 
import com.google.gwt.user.client.ui.TextBox; 

public class ExtendedTextBox extends TextBox { 
    public ExtendedTextBox() { 
     sinkEvents(Event.KEYEVENTS); 
    } 

    @Override 
    public void onBrowserEvent(Event event) { 
     Window.alert("keypress"); 
    } 

    public void unSinkKeyEvent(){ 
     unsinkEvents(Event.KEYEVENTS); 
    } 
} 

此示例創建一個文本框,只要你按一個鍵在這兩種提示消息框(一個用於該keydown一個用於KEYUP)彈出。如果您調用unSinkKeyEvent函數,則此行爲將停止。

所以,如果你不想有speciffic行爲對滑塊小工具你就必須得叫unsinkEvents功能的指定你不希望有(看看幫助)

問候的情況下, Stefan

+0

我試圖在UiBinder中使用該功能,但沒有奏效。在UiBinder中有沒有不同的方式來做到這一點。 – sosegon12

+0

我想你正在使用Eclipse。打開你的* ui.xml,進入設計模式(在左下角),選擇你想添加事件的元素,選擇「顯示事件」,雙擊你想創建的事件並定義它應該做什麼:)。相當不錯,不是多麼容易的工作;) – Stefan

+0

我正在使用HTMLPanel來封裝小部件。我添加了事件onPanelAttachOrDetach並調用了unsinkEvents函數,它現在可以工作。謝謝。 – sosegon12