GWT ValueChangeHandler和在值之前获取
我想在更改文本框的值之前和之后获取文本框的值GWT ValueChangeHandler和在值之前获取,gwt,event-handling,handler,gwt2,Gwt,Event Handling,Handler,Gwt2,我想在更改文本框的值之前和之后获取文本框的值 String beforeValue = ""; TextBox textBox = new TextBox(); textBox.addFocusHandler(new FocusHandler() { public void onFocus(final FocusEvent event) { beforeValue = textBox.getText(); } });
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());
}
});
字符串beforeValue=“”;
TextBox TextBox=新建TextBox();
addFocusHandler(新的FocusHandler(){
公众焦点无效(最终焦点事件){
beforeValue=textBox.getText();
}
});
addValueChangeHandler(新的ValueChangeHandler(){
价值变更时的公共作废(最终价值变更事件){
System.out.println(“前值为”+前值);
System.out.println(“后面的值是”+textBox.getText());
}
});
正如上面的代码一样,我需要两个处理程序(FocusHandler和ValueChangeHadler)来获取前值和后值。我的问题是,我如何通过一个处理程序或另一种简单易行的方法获得它?我不想使用两个处理程序来获得它。如有任何建议,将不胜感激提前谢谢您的想法(使用2个处理程序)足够公平,但它有缺陷。我认为没有更好的办法了。如果要使用单个处理程序,请使用这两个处理程序创建自定义类包装
这是你的密码
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);
}
公共抽象类MyValueChangeHandler实现ValueChangeHandler{
T prevValue=null;
T值=null;
公共MyValueChangeHandler(最终ValueBoxBase小部件){
addFocusHandler(新的FocusHandler(){
公众焦点无效(焦点事件){
prevValue=widget.getValue();
}
});
}
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
value=event.getValue();
onValueChange(值、prevValue);
//或
//onValueChange(事件、prevValue);
价值=价值;
}
公开摘要价值变更无效(T值,T值);
//或
//关于ValueChange的公共摘要无效(ValueChangeEvent事件,T prevValue);
}
你可以把它当作
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);
}
});
TextBox=newtextbox();
addValueChangeHandler(新的MyValueChangeHandler(框){
@凌驾
public void onValueChange(字符串值、字符串值){
Window.alert(“Prev值:+prevValue+”CurrentValue:”
+价值);
}
});
您的想法(使用2个处理程序)足够公平,但它有缺陷。我认为没有更好的办法了。如果要使用单个处理程序,请使用这两个处理程序创建自定义类包装
这是你的密码
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);
}
公共抽象类MyValueChangeHandler实现ValueChangeHandler{
T prevValue=null;
T值=null;
公共MyValueChangeHandler(最终ValueBoxBase小部件){
addFocusHandler(新的FocusHandler(){
公众焦点无效(焦点事件){
prevValue=widget.getValue();
}
});
}
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
value=event.getValue();
onValueChange(值、prevValue);
//或
//onValueChange(事件、prevValue);
价值=价值;
}
公开摘要价值变更无效(T值,T值);
//或
//关于ValueChange的公共摘要无效(ValueChangeEvent事件,T prevValue);
}
你可以把它当作
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);
}
});
TextBox=newtextbox();
addValueChangeHandler(新的MyValueChangeHandler(框){
@凌驾
public void onValueChange(字符串值、字符串值){
Window.alert(“Prev值:+prevValue+”CurrentValue:”
+价值);
}
});
您的想法(使用2个处理程序)足够公平,但它有缺陷。我认为没有更好的办法了。如果要使用单个处理程序,请使用这两个处理程序创建自定义类包装
这是你的密码
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);
}
公共抽象类MyValueChangeHandler实现ValueChangeHandler{
T prevValue=null;
T值=null;
公共MyValueChangeHandler(最终ValueBoxBase小部件){
addFocusHandler(新的FocusHandler(){
公众焦点无效(焦点事件){
prevValue=widget.getValue();
}
});
}
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
value=event.getValue();
onValueChange(值、prevValue);
//或
//onValueChange(事件、prevValue);
价值=价值;
}
公开摘要价值变更无效(T值,T值);
//或
//关于ValueChange的公共摘要无效(ValueChangeEvent事件,T prevValue);
}
你可以把它当作
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);
}
});
TextBox=newtextbox();
addValueChangeHandler(新的MyValueChangeHandler(框){
@凌驾
public void onValueChange(字符串值、字符串值){
Window.alert(“Prev值:+prevValue+”CurrentValue:”
+价值);
}
});
您的想法(使用2个处理程序)足够公平,但它有缺陷。我认为没有更好的办法了。如果要使用单个处理程序,请使用这两个处理程序创建自定义类包装
这是你的密码
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);
}
公共抽象类MyValueChangeHandler实现ValueChangeHandler{
T prevValue=null;
T值=null;
公共MyValueChangeHandler(最终ValueBoxBase小部件){
addFocusHandler(新的FocusHandler(){
公众焦点无效(焦点事件){
prevValue=widget.getValue();
}
});
}
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
value=event.getValue();
onValueChange(值、prevValue);
//或
//onValueChange(事件、prevValue);
价值=价值;
}
公开摘要价值变更无效(T值,T值);
//或
//关于ValueChange的公共摘要无效(ValueChangeEvent事件,T prevValue);
}
你可以把它当作
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);
}
});
TextBox=newtextbox();
addValueChangeHandler(新的MyValueChangeHandler(框){
@凌驾
public void onValueChange(字符串值、字符串值){
Window.alert(“Prev值:+prevValue+”CurrentValue:”