gpt4 book ai didi

java - 如何添加按钮以在最后一个选项卡附近添加新选项卡?

转载 作者:搜寻专家 更新时间:2023-10-31 19:57:00 24 4
gpt4 key购买 nike

有谁知道如何添加一个按钮来添加位于上次创建的选项卡附近的新选项卡?如果不清楚我的意思,只需查看浏览器中的选项卡和添加新选项卡的按钮;-) 这正是我想要管理的。

我正在使用 MyFaces+PrimeFaces。

最佳答案

您可以使用 <p:tabView>显示基于一些 bean 集合的动态标签集。您可以将“添加”选项卡显示为选项卡集的最后一个选项卡。如有必要,您甚至可以采用不同的样式。您可以使用 <p:ajax event="tabChange"> Hook 标签更改监听器,您可以在其中检查“添加”标签是否已打开,然后添加新标签。

例如

<h:form id="form">
<p:tabView id="tabs" value="#{bean.tabs}" var="tab" widgetVar="w_tabs">
<p:ajax event="tabChange" listener="#{bean.changeTab}" oncomplete="if (args.newTabIndex) w_tabs.select(args.newTabIndex)" />
<p:tab title="#{tab.title}">
<p>#{tab.content}</p>
</p:tab>
</p:tabView>
</h:form>

@ManagedBean
@ViewScoped
public class Bean implements Serializable {

private List<Tab> tabs;

@PostConstruct
public void init() {
// Just a stub. Do your thing to populate tabs.
// Make sure that the last tab is the "Add" tab.
tabs = new ArrayList<Tab>();
tabs.add(new Tab("tab1", "content1"));
tabs.add(new Tab("tab2", "content2"));
tabs.add(new Tab("Add...", null));
}

public void changeTab(TabChangeEvent event) {
int currentTabIndex = ((TabView) event.getComponent()).getActiveIndex();
int lastTabIndex = tabs.size() - 1; // The "Add" tab.

if (currentTabIndex == lastTabIndex) {
tabs.add(lastTabIndex, new Tab("tab" + tabs.size(), "content" + tabs.size())); // Just a stub. Do your thing to add a new tab.
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.update("form:tabs"); // Update the p:tabView to show new tab.
requestContext.addCallbackParam("newTabIndex", lastTabIndex); // Triggers the oncomplete.
}
}

public List<Tab> getTabs() {
return tabs;
}

}

Tab类在这个例子中只是一个带有属性 title 的普通 javabean和 content . oncomplete<p:ajax>是必要的,因为在添加新选项卡后选项卡内容会消失(毕竟这看起来很像 PF 错误;顺便说一句,我使用的是 3.3)。

关于java - 如何添加按钮以在最后一个选项卡附近添加新选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11961692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com