Java 如何动态刷新瓦丁手风琴?
我的手风琴有点问题。例如,当我尝试删除手风琴的一个标签时,我找不到任何方法。有人知道我怎么做吗 这里是我的一些代码Java 如何动态刷新瓦丁手风琴?,java,spring,hibernate,accordion,vaadin,Java,Spring,Hibernate,Accordion,Vaadin,我的手风琴有点问题。例如,当我尝试删除手风琴的一个标签时,我找不到任何方法。有人知道我怎么做吗 这里是我的一些代码 public ResponseUI(final Window mainWindow, boolean allowSave, final Context c) { InjectHelper.inject(this); buildMainLayout(); setCompositionRoot(mainLayout); // TODO add user
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%");
}
});
}
public ResponseUI(最终窗口主窗口、布尔allowSave、最终上下文c){
InjectHelper.injection(这个);
buildMainLayout();
setCompositionRoot(主布局);
//TODO在此处添加用户代码
//TODO:将响应添加到手风琴
List TemplatesEnvia=templateBusinessManager.getAllTemplatesResposta();
布尔bandera=true;
对于(模板tmpl:templatesreevenia){
accordion_respostes.addTab(新的PlantillaView(主窗口,面板_1,c,tmpl),tmpl.getSubject());
}
面板1.添加组件(新响应窗体(主窗口,allowSave));
面板响应设置可滚动(真实);
按钮\u 1.addListener(新建按钮。单击Listener(){
公共无效按钮单击(单击事件){
最终窗口对话框=新窗口(“Edicióde plantilla”);
dialog.setModal(true);
主窗口。添加窗口(对话框);
addComponent(新的PlantillaForm(主窗口,c,false));
对话框.setWidth(“85%”);
}
});
}
在
templateBusinessManager0
中,我有CRUD方法,所以我只需要知道在出现这种方法时如何刷新手风琴。希望有人有更好的解决方案。您可以在任何其他组件容器中使用类似的方法删除或替换。如果组件无法自行更改其状态,则必须将其调出。此示例应用程序在单击按钮时将一个选项卡的内容替换为其他内容。请注意,手风琴/标签页不会自动替换标签的元数据(如标题),而是从旧标签的元数据复制。在本例中,即使内容本身已交换,标题也始终显示“Tab 1”
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);
}
}瓦丁州(请参阅):您可以使用手风琴,其使用方式与标签纸相同
如果您查看TabSheet文档,您会发现如下内容:
tabsheet.removeTab(tab);
这是:
tabsheet.addTab(myTab).setCaption("My Tab");
因此,您可以使用replaceComponent()方法刷新标题、关闭选项卡或仅更改内部组件。如果需要删除特定选项卡,可以使用
removeTab(选项卡选项卡组件)
-tab参数可以通过getTab(component)
获得(component就是那个,您在调用addTab(component newTabComponent)
方法时使用的组件:o)
(或直接方式replaceComponent(旧组件、新组件)
也可以使用)
如果您需要删除所有accord选项卡,我使用的是
accordionInstance.removeAllComponents()
,但如果removeTab
或replaceComponent
很糟糕,还有一种方法-您可以添加具有特定布局的选项卡,并调用removeComponents()
和addComponent(newComponent)
在该布局上:)我需要刷新而不是删除:/remove+Add=refresh,因为它不一样object@GooDFighTy还有一个替换组件。你的第一句话提到“删除”,所以我想,这是你唯一的问题手风琴也有办法addTab(组件,标题)
:)