2012-04-11 3 views
1

그리드에서 EditTextCell 위젯에 대한 유효성 검사를하고 싶습니다. 그래서 EditTextCell을 확장하고 동일한 값 변경 리스너를 추가하려고합니다. 그래야 유효성 검사를 계속할 수 있습니다. 그러나 나는 같은 것을 추가 할 수 없다. 어떤 도움을 주시면 감사하겠습니다. GWT 사용 2.4.0GWT : EditTextCell 위젯에 값 변경 리스너 추가

내 코드는 다음과 같습니다. 그것은 EditTextCell이 할 수있는 유일한 적절한 방법처럼 보인다

public class MyEditTextCell extends EditTextCell { 
     public MyEditTextCell() { 
      super(); 
      onValueChange(new ValueChangeHandler<String>() { 
       @Override public void onValueChange(ValueChangeEvent event) { 
        Window.alert("jsdfk"); 
       } 
      }); 
     } 
     private void onValueChange(ValueChangeHandler<String> valueChangeHandler) { 
      Window.alert("jsdfk"); 
     } 
    } 
+0

처럼 구현 "그러나 나는 같은를 추가 할 수 없습니다입니다." 너 뭐 해봤 니? –

+0

공용 클래스 MyEditTextCell이 EditTextCell { 공공 MyEditTextCell() \t { \t \t 슈퍼() 확장 코드 또는 오류 스택 추적을 제공합니다; \t \t onValueChange (새 ValueChangeHandler () { \t \t \t \t \t @Override \t \t \t 공개 무효 onValueChange (ValueChangeEvent 이벤트) \t \t \t \t { \t \t \t는 Window.alert ("jsdfk"); \t \t \t} \t \t}}; \t} \t 개인 공극 onValueChange (ValueChangeHandler valueChangeHandler) \t \t \t { 는 Window.alert ("jsdfk"); \t} } –

답변

1

유사 EditTextCell 클래스의 개인 editEvent() 메소드) onBrowserEvent을 (무시하는 것입니다.

public void onBrowserEvent(Context context, Element parent, String value, 
     NativeEvent event, ValueUpdater valueUpdater) { 
      super.onBrowserEvent(context, parent, value, event, valueUpdater); 
      String type = event.getType(); 
      if ("keyup".equals(type) || "keydown".equals(type) || "blur".equals(type) { 
       validateValue(); 
      } 
    }

듣기 keyup, keydown 및 blur 이벤트가 실제 변경 사항을 처리하는 것은 아닙니다. 변경 사항을 건너 뛰지 않으려면 (예 : 컨텍스트 오른쪽 클릭 메뉴로 텍스트를 붙여 넣기) 값을 확인하는 com.google.gwt.user.client.Timer를 추가해야합니다. 타이머는 초점을 맞추고 흐리게 처리해야합니다.

'이벤트 방식'으로 코딩하려는 경우 1) ValueChangeEvent.fire (this, vale)에 의해 validateValue()를 대체하십시오. 2) MyEditTextCEll 인터페이스 HasValueChangeHandlers에 추가하고이

public HandlerRegistration addValueChangeHandler(
     ValueChangeHandler<String> handler) { 
    return addHandler(handler, ValueChangeEvent.getType()); 
    }