GWT - 避免收听事件

时间:2011-08-26 12:39:42

标签: gwt widget keyboard-events

我正在使用Google Web Toolkit Incubator中的SliderBar小部件。默认情况下,此小组件会侦听某些键盘事件,例如左箭头。我想知道是否有办法避免小部件监听这些事件。

我正在使用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,但也没有用。

感谢。

1 个答案:

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

此示例创建一个TextBox,每当您按下一个键时,弹出两个MessageBoxes(一个用于keyup的keydown)。如果调用unSinkKeyEvent函数,则此行为将停止。

因此,如果你不想在SliderBar小部件上有特定的行为,你也可以调用unsinkEvents函数来指定你不想拥有的事件(只需查看帮助)

此致 斯蒂芬