2011-08-26 62 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