【问题标题】:How do I change the title of a tab in a tabbedpanel in Apache Wicket?如何在 Apache Wicket 的选项卡式面板中更改选项卡的标题?
【发布时间】:2016-03-20 12:23:23
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java wicket tabbed


    【解决方案1】:
    public GenericTab( MyAbstractPanel myPanel ) {
      super( new PropertyModel<String>(myPanel, "title") );
    }
    

    【讨论】:

    • 这种方法如何帮助我以后修改标题?
    • 检查cwiki.apache.org/confluence/display/WICKET/…。 PropertyModel 是一个动态模型,因此如果您使用 API 更改 MyAbstractPanel#title,那么标签的标题将自动使用新标题。
    【解决方案2】:

    您必须像这样扩展 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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      相关资源
      最近更新 更多