2010-12-16 70 views
4

我尝试使用gwt在它下面创建一个textarea和一个带有字符长度的计数器,但它不计算退格,并且它有1个字符,它的长度为0.这是我的代码。可能是什么问题?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); 
} 

回答

4

也许你想跟踪KEYUP事件,而不是:

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

谢谢,这是工作。 – 2010-12-16 14:42:24

1

听起来你的按键下压事件之前完成字符计数。也许如果您尝试使用KeyUpHandler,那么文本区域将包含新添加的字符。

3

我想选中该代码应工作

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

您的解决方案也很好。 – 2010-12-16 14:42:59