GWT ValueChangeHandler并获得值 [英] GWT ValueChangeHandler and getting before value

查看:149
本文介绍了GWT ValueChangeHandler并获得值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  String beforeValue =我想要获取我的textBox的值,然后更改其值。 ; 
TextBox textBox = new TextBox();
textBox.addFocusHandler(new FocusHandler(){

public void onFocus(final FocusEvent event){
beforeValue = textBox.getText();

}
});
textBox.addValueChangeHandler(new ValueChangeHandler< String>(){

public void onValueChange(final ValueChangeEvent< String> event){
System.out.println( + beforeValue;
System.out.println(after value is+ textBox.getText());
}
});

如上所述,我需要两个处理程序( FocusHandler和ValueChangeHadler )获得价值和价值之后。我的问题是如何通过一个Handler或其他简单而简单的方式获得它?我不想使用两个处理程序来获取它。任何建议,将不胜感激。

解决方案

您的想法(使用2个处理程序)是公平的,但它的越野车。我不认为可以以更好的方式完成。如果要使用单个处理程序,请使用两个处理程序创建自定义类包装。



这是代码。

  public abstract class MyValueChangeHandler< T>实现ValueChangeHandler< T> {

T prevValue = null;
T value = null;

public MyValueChangeHandler(final ValueBoxBase< T> widget){
widget.addFocusHandler(new FocusHandler(){
public void onFocus(FocusEvent event){
prevValue = widget.getValue();
}
});
}

@Override
public void onValueChange(ValueChangeEvent< T> event){
value = event.getValue();
onValueChange(value,prevValue);

//或
// onValueChange(event,prevValue);

prevValue = value;
}

public abstract void onValueChange(T value,T prevValue);

//或
// public abstract void onValueChange(ValueChangeEvent< T> event,T prevValue);

}

您可以使用它作为

  TextBox box = new TextBox(); 
box.addValueChangeHandler(new MyValueChangeHandler< String>(box){
@Override
public void onValueChange(String value,String prevValue){
Window.alert( + prevValue +CurrnetValue:
+ value);
}
});


I want to get values of my textBox before change its value and after changed its value.

String beforeValue = "";
TextBox textBox = new TextBox();
    textBox.addFocusHandler(new FocusHandler() {

        public void onFocus(final FocusEvent event) {
            beforeValue = textBox.getText();

        }
    });
    textBox.addValueChangeHandler(new ValueChangeHandler<String>() {

        public void onValueChange(final ValueChangeEvent<String> event) {
            System.out.println("Before value is " + beforeValue);
            System.out.println("After value is " + textBox.getText());
        }
    });

As above codes , I need two handlers (FocusHandler and ValueChangeHadler) to get before value and after value . My question is how can I get it by one Handler or another simple and easy way ? I don't want to use two handlers to get it. Any suggestions would be appreciated. Thanks in advance !

解决方案

Your idea(using 2 handlers) is fair enough but its buggy. I don't think it can be done in a better way. If you want to use a single handler, create a custom class wrapper using the two handlers.

Here is the code for you.

public abstract class MyValueChangeHandler<T> implements ValueChangeHandler<T> {

T prevValue = null;
T value = null;

public MyValueChangeHandler(final ValueBoxBase<T> widget) {
    widget.addFocusHandler(new FocusHandler() {
        public void onFocus(FocusEvent event) {
            prevValue = widget.getValue();
        }
    });
}

@Override
public void onValueChange(ValueChangeEvent<T> event) {
    value = event.getValue();
    onValueChange(value, prevValue);

    // or
    // onValueChange(event, prevValue);

    prevValue = value;
}

public abstract void onValueChange(T value, T prevValue);

// or
// public abstract void onValueChange(ValueChangeEvent<T> event, T prevValue);

}

And you can use it as,

TextBox box = new TextBox();
    box.addValueChangeHandler(new MyValueChangeHandler<String>(box) {
        @Override
        public void onValueChange(String value, String prevValue) {
            Window.alert("Prev Value : " + prevValue + " CurrnetValue: "
                    + value);
        }
    });

这篇关于GWT ValueChangeHandler并获得值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆