Infinite Possibilities
Infinite Possibilities

Reputation: 7466

GWT TextArea listener

I try to use gwt to create a textarea and a counter under it with the length of the characters, but it doesn't counts the backspace and with 1 character it has length 0. Here's my code. What can be the problem?

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

Upvotes: 4

Views: 2548

Answers (3)

Jama A.
Jama A.

Reputation: 16079

I think checked this code should work

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

}

Upvotes: 3

Isaac Truett
Isaac Truett

Reputation: 8874

Sounds like you're counting characters before the key press event completes. Perhaps if you try a KeyUpHandler instead, then the text area will include the newly added character.

Upvotes: 1

barti_ddu
barti_ddu

Reputation: 10299

Perhaps you want to track KeyUp event instead:

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

Upvotes: 4

Related Questions