2010-12-16 9 views
4

Ich versuche, gwt zu verwenden, um ein Textfeld und einen Zähler darunter mit der Länge der Zeichen zu erstellen, aber es zählt nicht die Rücktaste und mit 1 Zeichen hat es die Länge 0. Hier ist mein Code. Was kann das Problem sein?GWT TextArea Listener

public class Test implements EntryPoint { 

TextArea textArea; 
Label counter; 

public void onModuleLoad() { 
    textArea = new TextArea(); 
    counter = new Label("Number of characters: 0"); 
    textArea.addKeyPressHandler(new KeyPressHandler() { 
     public void onKeyPress(KeyPressEvent event) { 
     counter.setText("Number of characters: " + textArea.getText().length()); 
    } 
    }); 
    RootPanel.get("myContent").add(textArea); 
    RootPanel.get("myContent").add(counter); 
} 

Antwort

4

Vielleicht möchten Sie KeyUp Ereignis verfolgen statt:

textArea.addKeyUpHandler(new KeyUpHandler() { 
    public void onKeyUp(KeyUpEvent event) { 
     counter.setText("Number of characters: " + textArea.getText().length()); 
    } 
}); 
+0

Danke, das funktioniert. –

1

Klingt wie Sie Zeichen sind zählen, bevor die Tastendruckereignis abgeschlossen ist. Wenn Sie stattdessen einen KeyUpHandler versuchen, wird der Textbereich das neu hinzugefügte Zeichen enthalten.

3

denke ich, überprüft dieser Code sollte

arbeiten
public class TextAreaEx implements EntryPoint { 
final TextArea textArea = new TextArea(); 
final Label counter = new Label("Number of characters: 0"); 

public void onModuleLoad() { 
    RootPanel.get().add(textArea); 
    RootPanel.get().add(counter); 
    addlistener(); 
} 

private void addlistener() { 
     textArea.addKeyUpHandler(new KeyUpHandler() { 
      public void onKeyUp(KeyUpEvent keyUpEvent) { 
       counter.setText(" Number of characters:"+textArea.getText().length()); 
      } 
     }); 
     textArea.addChangeHandler(new ChangeHandler() { 
      public void onChange(ChangeEvent changeEvent) { 
       counter.setText(" Number of characters:"+textArea.getText().length()); 
      } 
     }); 
    } 

}

+0

Ihre Lösung ist auch gut. –