Jla*_*Jla 25 events gwt textbox
我想在键入GWT TextBox时立即更新文本字段.我的问题是ValueChangeEvent和ChangeEvent处理程序仅在TextBox失去焦点时触发.我想过使用KeyPressEvent但是用鼠标执行复制粘贴时什么都不会发生.
最简单的方法是什么?
z00*_*0bs 33
您可以捕获ONPASTE事件并手动触发ValueChangeEvent.像这样的东西:
public void onModuleLoad() {
final Label text = new Label();
final ExtendedTextBox box = new ExtendedTextBox();
box.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
text.setText(event.getValue());
}
});
box.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
text.setText(box.getText());
}
});
RootPanel.get().add(box);
RootPanel.get().add(text);
}
private class ExtendedTextBox extends TextBox {
public ExtendedTextBox() {
super();
sinkEvents(Event.ONPASTE);
}
@Override
public void onBrowserEvent(Event event) {
super.onBrowserEvent(event);
switch (DOM.eventGetType(event)) {
case Event.ONPASTE:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
ValueChangeEvent.fire(ExtendedTextBox.this, getText());
}
});
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在firefox 3.6.1上测试过.