Работа с библиотекой ExtGWT: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 613:
[[Файл:gxtpanel22.png]]
 
В панельпанели можно динамически добавлятьменять компонентысодержимое после ее первоначальной отрисовки методом '''setWidget'''. Измененный пример:
 
<source lang=java>
cp.addTextsetWidget(new HTML("Текст <b>жирный</b>"));
 
// Кнопка OK в нижней области панели
ButtonTextButton btn = new ButtonTextButton("OK");
cp.addButton(btn);
btn.addSelectionListeneraddSelectHandler(new SelectionListener<ButtonEvent>SelectHandler() {
 
@Override
public void componentSelectedonSelect(ButtonEventSelectEvent beevent) {
HTML html = (HTML)cp.getWidget();
cp.add(new Text("Текст"));
html.setHTML(html.getHTML() + "<br />Новый текст");
cp.layout();
}
}
});
});
</source>
 
В этом случае мы создали объект ButtonTextButton (кнопка), а затем воспользовались анонимным классом, реализующим интерфейс SelectionListenerSelectHandler, в котором переопределили метод componentSelectedonSelect, который вызываетсявызывающимся при нажатии этой кнопки. Таким образом мы создали <b>обработчик</b> события типа ButtonEvent, выполняющий добавление новогоновой компонентанадписи с"Новый надписью "Тексттекст" и производящий перекомпоновку содержимого панеликомпонента HTML, который содержит наша панель.
 
В классическом случае мы бы могли создать новый класс (называющийся например, BtnSelectionListener), а уже от него создать объект-обработчик события и привязать его к кнопке. Однако, так как в нашем случае логика обработки события тривиальна и нет необходимости привязывать обработчик в нескольким визуальным компонентам, использование анонимного класса сделало наш код компактным и более читаемым. Следует отметить, что среда разработки Eclipse всячески способствует быстрому написанию кода, в большинстве случаев "угадывая" нужные нам типы событий и подставляя целые шаблоны кода, что дает разработчику возможность сконцентрироваться на бизнес-логике приложения, не отвлекаясь на написание и отладку интерфейсного кода.
 
В классическом случае мы бы могли создать новый класс (называющийся например, BtnSelectionListenerBtnSelectHandler), а уже от него создать объект-обработчик события и привязать его к кнопке. Однако, так как в нашем случае логика обработки события тривиальна и нет необходимости привязывать обработчик в нескольким визуальным компонентам, использование анонимного класса сделало наш код компактным и более читаемым. Следует отметить, что среда разработки Eclipse всячески способствует быстрому написанию кода, в большинстве случаев "угадывая" нужные нам типы событий и подставляя целые шаблоны кода, что дает разработчику возможность сконцентрироваться на бизнес-логике приложения, не отвлекаясь на написание и отладку интерфейсного кода.
Для обновления содержимого панели после изменения нам необходимо обычно вызывать ее метод layout(). Библиотека ExtGWT будет делать это самостоятельно автоматически при установке метода панели setLayoutOnChange(true). Обратите внимание, что в нашем последнем примере компонент Text - это похожий на родной GWT-виджет Label (может содержать простой текст и не поддерживает HTML разметку).
 
==== Viewport ====