我如何迭代 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());
}
我想做这样的事情:
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());
}