2010-12-16 9 views
4

gwtを使用して、文字の長さでテキストエリアとカウンタを作成しようとしましたが、バックスペースをカウントせず、1文字の長さは0です。何が問題なの?GWT TextAreaリスナー

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

が、これは働いている、ありがとうございます。 –

1

が鳴ります。代わりにKeyUpHandlerを試してみると、テキスト領域には新しく追加された文字が含まれます。私がチェックし、このコードは

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

を動作するはずだと思う

3

}

+0

あなたの解決策も良いです。 –