簡體   English   中英

我如何在vaadin中遍歷手風琴?

[英]how do i iterate over an accordion in vaadin?

我想做這樣的事情:

Iterator<Component> componentIterator = accordion.iterator();
    while (componentIterator.hasNext()) {
        Accordion c = (Accordion) componentIterator.next();
        System.out.println("test: " + c.getCaption());
    }

但是“ c”變量始終為null,所以問題是,如何獲得手風琴中的制表符標題?

謝謝。

編輯:MChaker,在這里!

    @PostConstruct
public void posInit() {
    VerticalLayout layoutGeral = LayoutFactory.vertical();

    TabSheet tabSheet = new TabSheet();
    tabSheet.setCaption("Editar");
    tabSheet.setWidth(ConstantesUI.CEM_POR_CENTO);
    tabSheet.setHeight(400, Unit.PIXELS);

    Accordion accordion = new Accordion();

    addTabsToAccordion(accordion);

    accordion.setWidth(1170, Unit.PIXELS);
    accordion.setHeight(600, Unit.PIXELS);

    if (accordion != null && accordion.getCaption() != null) {
        if (accordion.getCaption().equals("Configurações Gerais")) {
            accordion.setWidth(1200, Unit.PIXELS);
            accordion.setHeight(240, Unit.PIXELS);
        }
    }

    tabSheet.addComponent(accordion);

    final Panel panel = new Panel();
    panel.setHeight(550, Unit.PIXELS);
    panel.setScrollLeft(0);

    panel.setContent(tabSheet);

    layoutGeral.addComponent(LayoutFactory.titulo("Propriedades"));
    layoutGeral.addComponent(LayoutFactory.conteudo(panel, new HorizontalSplitPanel(), addSaveButton()));

    addComponent(layoutGeral);

    setSizeFull();
}

addTabsToAccordion方法:

accordion.addTab(buildTabEmail(this.props), "Email");

buildTabEmail方法:

private FormLayout buildTabEmail(Map<String, Propriedades> props) {

    // definição dos campos
    this.servidor = TextFieldFactory.simples("Servidor:", 20);
    this.porta = TextFieldFactory.simplesNumerico("Porta:", 5);
    this.usuairoEmail = TextFieldFactory.simples("Usuário:", 15);
    this.passwordEmail = PasswordFieldFactory.simples("Senha:", 10);
    this.emissorMensagem = TextFieldFactory.simples("Emissor da Mensagem:", 30);
    this.sslPort = CheckBoxFactory.marginTop5("SSL");
    this.tlsPort = CheckBoxFactory.marginTop5("TLS");


    // adição ao mapa
    this.configMap.put(PropsHandler.CONST_EMAILPORT, new VO(porta, props.get(PropsHandler.CONST_EMAILPORT)));
    this.configMap.put(PropsHandler.CONST_EMAILEMISSOR, new VO(emissorMensagem, props.get(PropsHandler.CONST_EMAILEMISSOR)));
    this.configMap.put(PropsHandler.CONST_EMAILSENHA, new VO(passwordEmail, props.get(PropsHandler.CONST_EMAILSENHA)));
    this.configMap.put(PropsHandler.CONST_EMAILUSER, new VO(usuairoEmail, props.get(PropsHandler.CONST_EMAILUSER)));
    this.configMap.put(PropsHandler.CONST_EMAILHOST, new VO(servidor, props.get(PropsHandler.CONST_EMAILHOST)));
    this.configMap.put(PropsHandler.EMAIL_TLS, new VO(tlsPort, props.get(PropsHandler.EMAIL_TLS)));
    this.configMap.put(PropsHandler.EMAIL_SSL, new VO(sslPort, props.get(PropsHandler.EMAIL_SSL)));

    preencheDadosEdicao();

    FormLayout tabEmail = new FormLayout();
    tabEmail.addComponent(servidor);
    tabEmail.addComponent(porta);
    tabEmail.addComponent(usuairoEmail);
    tabEmail.addComponent(passwordEmail);
    tabEmail.addComponent(emissorMensagem);
    tabEmail.addComponent(sslPort);
    tabEmail.addComponent(tlsPort);

    return tabEmail;
}

你是這個意思嗎?

TabSheet tabsheet= new TabSheet();
// Create an example of tab
VerticalLayout tabExample= new VerticalLayout();
tabExample.addComponent(new Embedded(null,
       new ThemeResource("anyImage.jpg")));
tabExample.setCaption("Example");
tabsheet.addTab(tabExample).setIcon(
        new ThemeResource("anyIcon.png"));


Iterator<Component> componentIterator = tabsheet.getComponentIterator();
while (componentIterator.hasNext()) {
    Component c = (Component) componentIterator.next();
    Tab tab = tabsheet.getTab(c);
    System.out.println("test: " + tab.getCaption());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM