gwt Составной открытый/видимый обработчик

У меня есть несколько композитов, и я хотел бы добавить к одному из них обработчик, который запускает событие, если пользователь открывает этот композит. Есть ли обработчик для?

Спасибо


person ph09    schedule 23.10.2011    source источник


Ответы (1)


Хорошим/простым способом запуска событий является использование библиотеки GQuery, которая эмулирует JQuery в коде GWT. Это позволяет вам делать такие вещи, как:

$(yourWidget).blur();

например, запустить событие размытия на вашем виджете... если вы не возражаете против добавления зависимости от GQuery в свой проект, на мой взгляд, это правильный путь. Вы даже можете предоставить функцию, которая будет вызываться после запуска события, например:

$(yourWidget).click(new Function() {
  public boolean f(Event e) {
    e.preventDefault();
    return false;
  }
}

Я не уверен, как бы вы сделали это в чистом GWT, но это, очевидно, возможно... вы можете посмотреть, как это делает GQuery.

http://code.google.com/p/gwtquery/

person Renato    schedule 23.10.2011
comment
Хм, звучит немного сложно. Я думаю, что должно быть более простое решение для. Я объясняю это другими словами. У меня есть вкладка с несколькими композитами. Когда пользователь нажимает на один из них, ему показывается Composite. В этом случае я хотел бы запустить метод, но я не знаю, есть ли какой-либо обработчик для.. - person ph09; 24.10.2011
comment
Каков тип вашей TabPanel? Например, если это TabLayoutPanel, вы можете добавить к нему SelectionHandler‹Integer›, вызвав addSelectionHandler(..). Метод onSelection(SelectionEvent‹Integer›) будет вызываться каждый раз, когда пользователь меняет вкладку. Затем вы можете делать все, что хотите, например, динамически заполнять один из ваших композитов. - person Renato; 25.10.2011
comment
Но в любом случае, если кто-то нажимает на ваш Composite, вы говорите, что Composite показывается пользователю... Что вы имеете в виду? Композит становится больше??? Или Композит создается и показывается?? В любом случае вы должны получать событие onClick?! Или ваша проблема в том, чтобы получить событие клика??? - person Renato; 25.10.2011