Примера:GWT переключатель ChangeHandler событие не работает
private Widget getSelectBox() {
HorizontalPanel hPanel = new HorizontalPanel();
hPanel.setSpacing(20);
final ListBox dropBox = new ListBox(false);
String[] listTypes = {"1", "2", "3"};
for (int i = 0; i < listTypes.length; i++) {
dropBox.addItem(listTypes[i]);
}
dropBox.ensureDebugId("cwListBox-dropBox");
dropBox.getElement().setId("cms-dropBox");
VerticalPanel dropBoxPanel = new VerticalPanel();
dropBoxPanel.setSpacing(4);
dropBoxPanel.add(dropBox);
hPanel.add(dropBoxPanel);
dropBox.addChangeHandler(new ChangeHandler() {
public void onChange(ChangeEvent event) {
Window.alert("change fired");
dropBox.addItem("else");
consoleLog("selected: "+ dropBox.getSelectedIndex());
}
});
return hPanel;
}
ChangeHandler не работает. Хотя в официальном примере он отлично работает (http://samples.gwtproject.org/samples/Showcase/Showcase.html#!CwListBox ). Но он не работает в этом коде. Ошибок нет.
DOM.sinkEvents((com.google.gwt.user.client.Element) dropBox.getElement(), Event.ONCHANGE);
DOM.setEventListener((com.google.gwt.user.client.Element) dropBox.getElement(), new EventListener() {
@Override
public void onBrowserEvent(Event event) {
if (DOM.eventGetType(event) == Event.ONCHANGE) {
Window.alert("change fired");
dropBox.addItem("who");
consoleLog("selected: "+ dropBox.getSelectedIndex());
}
}
});
Этот способ не работает.
UPD: все работы в классе MainEntryPoint, но нужно panel.add, и это не работает
Ну, я просто проверял свой первый пример, и он отлично работает (появляется окно предупреждения и «еще» варианта добавлен). Я только что прокомментировал вызов 'consoleLog'. Вы уверены, что в GWT и в консоли браузера нет ошибок? – Adam
привет! Ну, да, он должен работать над документацией, поэтому мой мозг взрывается - я в приложении, он не дает никаких ошибок и не работает так, как если addChangeHandler отсутствует. поэтому я даже не знаю, как отследить проблему. consoleLog - это просто «native void consoleLog (String text)) /* - { console.log (текст); } - * /;" – Jack
все работает в классе MainEntryPoint, но panel.add (новый SomeClass(). getWidget ()) нужна, и это не работает. – Jack