Есть ли способ узнать, когда виджет отображается с GWT? - PullRequest
1 голос
/ 19 марта 2012

Я хотел бы ответить на событие, даже когда мой виджет стал видимым на странице, созданной с помощью GWT и UI Binder.

Есть ли что-нибудь похожее на обработчик событий onAttach() (который срабатывает при добавлении виджета в DOM), когда фактически виджет становится видимым?

Мне бы хотелосьчтобы иметь возможность обрабатывать даже когда виджет отображается, потому что есть несколько различных способов сделать его видимым, и я бы хотел, чтобы в самом виджете было одно место, которое может обработать это событие.

Спасибо

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

Нет события браузера для этого, но вы можете попробовать это:

С помощью вашего виджета вы можете проверить элементы getLeftOffset (или аналогичный метод), если вы получите положительное значение, вы можете запуститьваш метод и установите флаг, чтобы указать, что ваш метод onVisible() сработал.

Затем, когда getLeftOffset вернет 0, вы можете сбросить свой флаг, готовый снова запустить событие.

0 голосов
/ 21 июля 2015

Я знаю, что это старый вопрос, я сталкивался с той же проблемой раньше. Я переопределил метод setVisible(boolean visible) в виджете, а затем выполнил все, что мне нужно было сделать:

@Override
public void setVisible(boolean isVisible) {
    super.setVisible(isVisible);
            if(isVisible) {
                // Do whatever you need to do with your widget
    }
}
0 голосов
/ 19 марта 2012

Виджет должен быть виден после добавления в DOM, если вы не умышленно скрыли его (то есть с помощью CSS или спрятали его за другим виджетом). Обычно onAttached () означает его на странице. Если вы используете классы CSS, чтобы сделать его видимым, напишите метод setVisible (boolean isVisible) для своего виджета и установите класс видимости таким образом. Если он находится за другим виджетом (т. Е. В слоях), то вам нужно написать свою единственную логику, чтобы определить, когда он виден.

...