我对手风琴有点问题。当我尝试删除一个手风琴标签时,我找不到任何方法。有谁知道我怎么能这样做?
这是我的一些代码。
public ResponseUI(final Window mainWindow, boolean allowSave, final Context c) {
InjectHelper.inject(this);
buildMainLayout();
setCompositionRoot(mainLayout);
// TODO add user code here
//TODO: add responses to accordion
List<Templates> templatesReenvia = templateBusinessManager.getAllTemplatesResposta();
boolean bandera = true;
for(Templates tmpl : templatesReenvia) {
accordion_respostes.addTab(new PlantillaView(mainWindow, panel_1, c, tmpl), tmpl.getSubject());
}
panel_1.addComponent(new ResponseForm(mainWindow,allowSave));
panel_respostes.setScrollable(true);
button_1.addListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
final Window dialog = new Window("Edició de plantilla");
dialog.setModal(true);
mainWindow.addWindow(dialog);
dialog.addComponent(new PlantillaForm(mainWindow, c, false));
dialog.setWidth("85%");
}
});
}
在templateBusinessManager0
我有CRUD方法,所以我只需要知道如何在其中一种方法出现时刷新手风琴。希望有人有更好的解决方案。
答案 0 :(得分:0)
您使用removeComponent删除或使用replaceComponent替换,就像在任何其他组件容器中一样。如果您的组件无法自行更改其状态,则必须将它们交换出来。
答案 1 :(得分:0)
此示例应用程序在单击按钮时将一个选项卡的内容替换为其他内容。另请注意,Accordion / TabSheet不会自动替换选项卡的元数据(例如标题),而是从旧选项卡的元数据中复制它。在此示例中,标题始终显示&#34; Tab 1 &#34;即使内容本身已被交换。
public class AccordionUI extends UI {
private Accordion accordion;
private Panel tab1, tab2, tab3;
@Override
protected void init(VaadinRequest request) {
HorizontalLayout hl = new HorizontalLayout();
setContent(hl);
tab1 = new Panel("Tab 1");
tab2 = new Panel("Tab 2");
tab3 = new Panel("Tab 3");
accordion = new Accordion(tab1, tab2);
hl.addComponent(accordion);
Button button = new Button("Replace");
button.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
accordion.replaceComponent(tab1, tab3);
}
});
hl.addComponent(button);
}
}
答案 2 :(得分:0)
Vaadin陈述(见https://vaadin.com/book/vaadin7/-/page/layout.accordion.html):您可以将一个手风琴与TabSheet完全相同。
如果您查看TabSheet文档,您会发现以下内容:
tabsheet.removeTab(tab);
而且:
tabsheet.addTab(myTab).setCaption("My Tab");
因此,您可以刷新标题,关闭选项卡或只使用replaceComponent()方法更改内部组件。
答案 3 :(得分:0)
如果您需要删除特定标签,可以使用removeTab(Tab tabComponent)
- 你可以通过getTab(component)
得到制表符号(组件就是那个,你在调用addTab(Component newTabComponent)
时使用的方法:o)
(或直接方式replaceComponent(oldComponent, newComponent)
也应该有效)
如果您需要删除所有符合标签,我使用accordionInstance.removeAllComponents()
,但如果removeTab
或replaceComponent
很糟糕,那么还可以添加带有特定布局的标签,您在该布局上调用removeComponents()
和addComponent(newComponent)
:)