2011-08-26 6 views
0

Google Web Toolkit Incubator의 SliderBar 위젯을 사용하고 있습니다. 기본적으로이 위젯은 키보드 이벤트를 수신합니다. 왼쪽 화살표. 위젯이 이러한 이벤트를 듣지 않도록하는 방법이 있는지 알고 싶습니다.GWT - 이벤트 수신 대기 방지

저는 UiBinder를 사용하고 있으며 unsinkEvents 함수를 사용하려고했지만 아무 일도 일어나지 않았습니다. 다음은 코드 스 니펫입니다.

@UiField (제공된 = 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도 사용되었지만 작동하지 않습니다.

감사합니다.

unsinkEvents 

기능으로

답변

0

.

나는 기초를 보여주기 위해 간단한 예제를 만들어 :

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); 
    } 
} 

이 예는 텍스트 상자를 생성하고 사용자가 키 두으로 메시지합니다 (의 keyup의를 keyDown 하나 하나)를 누를 때마다 팝업. unSinkKeyEvent 함수를 호출하면이 behafios가 중지됩니다.

당신은 unsinkEvents는 당신이

안부를 (단지 도움보고)하고 싶지 않아 이벤트를 지정하는 기능 SliderBar 방금 전화를 너무이 위젯에 speciffic 동작을하지 않으 그래서 경우 Stefan

+0

UiBinder에서이 기능을 사용하려고했지만 작동하지 않았습니다. UiBinder에서 다른 방법이 있습니까? – sosegon12

+0

Eclipse를 사용하고 있다고 가정합니다. * ui.xml을 열고 디자인 모드 (왼쪽 하단)로 이동하여 이벤트를 추가 할 요소를 선택하고 "이벤트 표시"를 선택하여 생성하려는 이벤트를 두 번 클릭하고 수행 할 작업을 정의하십시오 :). 꽤 위대한 것은 그게 얼마나 쉬운 일인지는 모르겠다;) – Stefan

+0

위젯을 래핑하기 위해 HTMLPanel을 사용하고있다. onPanelAttachOrDetach 이벤트를 추가하고 unsinkEvents 함수를 호출했습니다. 이제 작동합니다. 감사. – sosegon12