У меня есть небольшой проект веб-приложения с использованием GWT, где кнопка обрабатывает событие: заполнение панели виджетами. В настоящее время нажатие кнопки второй раз дублирует панель, я хочу, чтобы она очищала панель, и повторно добавляет виджеты.Использование кнопки для обновления панели в GWT
До сих пор у меня есть:
final Button b = new Button("get schools near me");
final HorizontalPanel panel = new HorizontalPanel();
panel.getElement().setId("distanceTable");
RootPanel.get("core").add(b);
RootPanel.get("core").add(panel);
b.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
Timer t = new Timer(){
@Override
public void run() {
//how do you clear the panel here first? before you
// do a bunch of things along the lines of:
panel.add(widget);
panel.add(widget2);
}
};
t.schedule(1400); // wait 1.4 seconds for callback
}
});
Я понимаю, что все, что вы перейти к функции запуска должен быть в качестве окончательной декларации, так как я получаю вокруг этого?
Я не рекомендую использовать таймер для ожидания обратного вызова. Почему бы не упаковать блок-очистку и код добавления виджета в функцию onSuccess обратного вызова? Тогда вы можете быть уверены, что он всегда вызывается после того, как данные благополучно прибыли. – subrunner
Я знаю, что это не лучшая практика, но поскольку функция onSuccess не может вернуть объект, мне пришлось бы передать каждый объект, который мне нужен, с помощью asyncallback, что делает его очень грязным. Я не знаю, как обойти это –
См. Ответ в http://stackoverflow.com/a/33808565/2746149 – subrunner