如何更改Apache Wicket中tabbedpanel中选项卡的标题?

时间:2016-03-20 12:23:23

标签: java wicket tabbed

我有一个TabbedPanel,我在其中动态添加和删除标签。另外我想根据其变化的内容更改选项卡的标题。在我当前的代码中,标题由Wicket ID设置,如:

public class GenericTab extends AjaxTab {
private boolean closable = true;

public GenericTab( MyAbstractPanel myPanel ) {
    super( Model.of( myPanel.getTitle() ) );
}

所以我可以在实例化时设置一次标题。如何使用Java代码更改它?

2 个答案:

答案 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));