2012-04-11 8 views
1

Ich möchte Validierung für EditTextCell Widget im Raster. Also versuche ich, die EditTextCell zu erweitern und einen Wert ändern Listener auf die gleiche, so dass ich mit der Validierung fortsetzen kann. Aber ich kann das nicht hinzufügen. Jede Hilfe wäre willkommen. Verwende GWT 2.4.0GWT: Hinzufügen eines Wert ändern Listener EditTextCell widget

Mein Code sieht so aus.

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

„Aber ich bin nicht in der Lage, das gleiche zu addieren.“ Was hast du probiert? Geben Sie Code oder Fehler-Stack-Trace –

+0

public class MyEditTextCell erweitert EditTextCell { öffentlichen MyEditTextCell() \t { \t \t super(); \t \t onValueChange (neu ValueChangeHandler () \t \t { \t \t \t @Override \t \t \t public void onValueChange (ValueChangeEvent Ereignis) \t \t \t { \t \t \t \t Window.alert ("jsdfk"); \t \t \t} \t \t}); \t} \t private void onValueChange (ValueChangeHandler valueChangeHandler) \t { \t \t Window.alert ("jsdfk"); \t} } –

Antwort

1

Es ist wie die einzige angemessene Art und Weise scheint mit EditTextCell dies zu tun ist onBrowserEvent() ähnlich wie bei privaten editEvent() -Methode von EditTextCell Klasse außer Kraft zu setzen.

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

Aber hören keyup, keydown und Unschärfe Ereignis bietet keine Garantie für tatsächliche Änderung der Handhabung. Wenn Sie keine Änderungen überspringen möchten (z. B. Einfügen von Text über Kontext-Kontextmenü), sollten Sie com.google.gwt.user.client.Timer hinzufügen, der den Wert überprüft. Der Timer sollte im Fokus laufen und bei Unschärfe aufhören.

Wenn Sie 'Ereignis Weg' Code 1) ersetzen validateValue() von ValueChangeEvent.fire (this, vale); 2) legen zum MyEditTextCEll Schnittstelle HasValueChangeHandlers und umzusetzen wie diese

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