У меня есть несколько виджетов для управления фильтрацией списка элементов в Grid
. Каждый виджет имеет прослушиватель изменения значения, поэтому, когда пользователь использует один из виджетов, настраиваются фильтры на поставщике данных за Grid
, в результате чего объект Grid
отображает подмножество своих элементов.
strength = new RadioButtonGroup <>(); // Backed with enum named `Strength`.
strength.setLabel( "Strength:" );
strength.setItems( Strength.values() );
strength.setValue( Strength.ANY );
strength.setRenderer( new TextRenderer <>( Strength :: getDisplayName ) );
strength.addValueChangeListener( event -> {
configureFilters();
} );
Это хорошо работает.
У меня также есть кнопка Сброс , чтобы вернуть элементам фильтра обратно в их состояние по умолчанию.
reset = new Button( "Reset" );
reset.addClickListener( event -> {
this.resetCriteria();
this.configureFilters();
} );
Метод resetCriteria
выполняет серию следующих вызовов:
this.strength.setValue( Strength.ANY );
Это вызывает проблемы. Сброс этих виджетов вызывает события изменения значения и слушает выполнение. Это прервало мою серию setValue( … )
звонков. Поэтому некоторые виджеты управления фильтром не сбрасываются.
there Есть ли способ приостановить события изменения значения от запуска или слушателей от прослушивания во время краткой интерлюдии, когда я возвращаю все значения виджета обратно к значениям по умолчанию?
Или я должен использовать совершенно другой подход к сбросу виджетов? Полагаю, я мог бы отказаться от всего макета виджетов и воссоздать его с нуля, но это кажется излишним, как будто должен быть более элегантный подход.