2010-12-16 72 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