如果我想在输入内容后立即更新,我发现KeyUpHandler似乎是TextBox最动态的Handler。然而,考虑到值可能会在没有人按键的情况下发生变化,因此需要使用ValueChangeHandler,不幸的是,单独使用时不是动态的,并且每次使用键盘更改TextBox的内容时都不会触发。
现在我有一个像这样的方法将两个处理程序添加到TextBox中,但我想这不是添加多个处理程序的最佳方式,也可能不是非常高效:
private void addInputValueChangeHandlers(TextBox inputTextBox) {
inputTextBox.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
updateResult();
}
});
inputTextBox.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
updateResult();
}
});
}
那么有没有办法将它们或处理程序组合起来,以产生与此相同的效果?
答案 0 :(得分:0)
覆盖onBrowseEvent或使用NativePreview Handler完成工作。
答案 1 :(得分:0)
我认为你应该通过做类似的事情来检测自己onKeyUp
方法中是否有变化:
private void addInputValueChangeHandlers(TextBox inputTextBox) {
inputTextBox.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
if(!inputTextBox.getValue().equals(previousValue)){
updateResult();
}
previousValue = inputTextBox.getValue();
}
});
}
previousValue
是您的类的属性,其初始值等于null
。