GWT странное поведение обработчика onblur - PullRequest
0 голосов
/ 17 июня 2019

Привет, я использую обработчики фокуса и размытия для панели потока, чтобы добавить контуры. Тем не менее, я получаю странное поведение, учитывая код:

            panel.addDomHandler(new FocusHandler() {
                @Override
                public void onFocus(FocusEvent focusEvent) {
                    panel.addStyleName("FOOSTYLE");
                }
            }, FocusEvent.getType());


            panel.addDomHandler(new BlurHandler() {
                FlowPanel _panel = focusPanel;
                boolean init = false;
                @Override
                public void onBlur(BlurEvent blurEvent) {
                    console.log("Do Blur");
                    panel.removeStyleName("FOOSTYLE");
                }
            }, BlurEvent.getType());

Кажется, что removeStyleName () в обработчике размытия вызывается без причины, также обратите внимание на журнал, он даже не выполняется, когда вызывается обработчик случайного размытия, если он вообще был.

есть предложения?

1 Ответ

0 голосов
/ 17 июня 2019

Для обработки событий фокусировки и размытия вы должны использовать FocusPanel.Он реализует HasFocusHandlers и HasBlurHandlers, поэтому вы можете вызывать addFocusHandler() и addBlurHandler() вместо низкоуровневого метода addDomHandler().

Если вынеобходимо использовать FlowPanel, чтобы выложить свои виджеты, вы можете добавить его к FocusPanel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...