2012-04-11 11 views
1

グリッド内でEditTextCellウィジェットの検証を行いたいと思います。だから私はEditTextCellを拡張し、値の変更リスナを同じに追加しようとしているので、検証を続けることができます。しかし、私は同じものを追加することはできません。どんな助けもありがとう。 GWTを使用しています。2.4.0GWT: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でこれを行うための唯一の適切な方法は、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(); 
      } 
    }

しかし、listen 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()); 
    } 
関連する問題