我有一个TabbedPanel,我在其中动态添加和删除标签。另外我想根据其变化的内容更改选项卡的标题。在我当前的代码中,标题由Wicket ID设置,如:
public class GenericTab extends AjaxTab {
private boolean closable = true;
public GenericTab( MyAbstractPanel myPanel ) {
super( Model.of( myPanel.getTitle() ) );
}
所以我可以在实例化时设置一次标题。如何使用Java代码更改它?
答案 0 :(得分:1)
public GenericTab( MyAbstractPanel myPanel ) {
super( new PropertyModel<String>(myPanel, "title") );
}
答案 1 :(得分:0)
您必须像这样扩展 AjaxTabbedPanel 并覆盖 newTitle
方法:
@Override
protected Component newTitle(String titleId, IModel<?> titleModel, int index) {
Label updatableLabel = new Label(titleId, titleModel) {
@Override
public void onEvent(IEvent<?> event) {
super.onEvent(event);
Object payload = event.getPayload();
if (payload instanceof MyAjaxEvent) {
((MyAjaxEvent) payload).getTarget().add(this);
}
}
};
updatableLabel.setOutputMarkupId(true);
return updatableLabel;
}
之后,您可以使用
更新标签标题send(getPage(), Broadcast.BREADTH, new MyAjaxEvent(target, model));