PopupDateField监听器

时间:2014-06-13 20:38:27

标签: java listener vaadin7 datefield

我有一个带有ValueChangeListener的PopupDateField。

有没有办法区分是否从.setValue() - Call或User-Input触发了Event?

我希望仅在用户更改值时才会执行事件,而不是由程序更改事件。


我在设置新值之前删除了ValueChangListener,并在之后添加了它,我做了一个脏的解决方法,但我感谢更好的解决方案......

private static void setDateFieldValue(final PopupDateField dateField, Date value) {
    Collection<Property.ValueChangeListener> listeners = (Collection<Property.ValueChangeListener>)dateField.getListeners(Property.ValueChangeEvent.class);
    listeners.forEach(new Consumer<Property.ValueChangeListener>() {
        @Override
        public void accept(Property.ValueChangeListener listener) {
            dateField.removeValueChangeListener(listener);
        }
    });

    dateField.setValue(value);

    listeners.forEach(new Consumer<Property.ValueChangeListener>() {
        @Override
        public void accept(Property.ValueChangeListener listener) {
            dateField.addValueChangeListener(listener);
        }
    });
}

0 个答案:

没有答案