在 GWT 中,我想处理点击事件,但仅限于用户点击一天时。有一个 valueChangeHandler 但它会在值更改时触发,所以当我在同一天点击两次时它会触发一次。
其他选项是使用 addHandler 或 addDomHandler ,我可以在其中添加 ClickHandler,但它总是会触发,无论我点击一天还是转到其他月份。
对我来说这两个选项都不起作用。任何想法如何做到这一点?
在 GWT 中,我想处理点击事件,但仅限于用户点击一天时。有一个 valueChangeHandler 但它会在值更改时触发,所以当我在同一天点击两次时它会触发一次。
其他选项是使用 addHandler 或 addDomHandler ,我可以在其中添加 ClickHandler,但它总是会触发,无论我点击一天还是转到其他月份。
对我来说这两个选项都不起作用。任何想法如何做到这一点?
使用 addvalueChangeHandler 然后将值设置为其他值。这是一个黑客,但它对我有用。
calendarWidget.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onValueChange(ValueChangeEvent<Date> event) {
calendarWidget.setValue(new Date(0));
}
}
您还可以在 DateBox.getDatePicker() 和 DateBox.getTextBox() 上添加处理程序。您可以像这样添加另一个处理程序...
dateBox.addHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
Window.alert("click");
}
}, ClickEvent.getType());
首先,你应该描述更多的细节。我不知道你真正想做什么。这是我的建议。
(1)。使用Cookies保存当前使用用户的信息并将过期日期设置为 1 天。
(2)。不要使用 addNewHandler。您应该使用一个处理程序实例的全局变量并将其初始化为 NULL 。起初,你会被初始化它。那可能只创建一次,您可以检查它是否为 NULL 。例如:
private CloseHandler handler;
.......
if (handler == null) {
handler = new CloseHandler<PopupPanel>() {
public void onClose(final CloseEvent<PopupPanel> event) {
........
}
};
}
(3)。您也可以使用简单的处理程序,如果触发事件,则保存在具有当前时间和唯一值的Map中(例如:登录 user.etc 的序列)。再次点击后,您将检索并匹配当前和以前的时间。
对你有用。。