2012-02-06 68 views
2

我想在另一个FormPanel中嵌套一个FormPanel。似乎嵌套面板中的任何字段都不会呈现。GWT - 你可以在FormPanels中嵌套FormPanels吗?

enter image description here

TabItem tabItem = new TabItem("Tab Item"); 

FormPanel formPanel = new FormPanel(); 
formPanel.setHeading("Form Panel"); 
formPanel.setFrame(true); 

TextField textField = new TextField(); 
textField.setFieldLabel("Text Field"); 

FormPanel nestedPanel = new FormPanel(); 
nestedPanel.setHeading("Nested Panel"); 

TextField nestedField = new TextField(); 
nestedField.setFieldLabel("Nested Field"); 

nestedPanel.add(nestedField); 

TextField anotherField = new TextField(); 
anotherField.setFieldLabel("Another Field"); 

formPanel.add(textField); 
formPanel.add(nestedPanel); 
formPanel.add(anotherField); 

tabItem.add(formPanel); 
tabPanel.add(tabItem); 

任何人都可以解释为什么嵌套字段不嵌套面板显示:

这张截图是由它下面的代码生成?

我也尝试使用CaptionPanel而不是FormPanel作为嵌套面板,但标题面板不显示字段标签。

任何关于如何让这个工作的建议将是最受欢迎的。谢谢:)

回答

3

正如贾森提到的,<form>不能嵌套。 GXT FormPanel将绘制表格作为其工作原理的一部分,因此请考虑以另一种方式绘制此版式。

要模拟FormPanel的外观,有两个基本步骤。

  • 要获得头,边框,营造ContentPanel和内容添加到
  • 要获得绘制字段标签的GXT 2布局,在内容面板使用FormLayout

这将是这个样子(从你的例子)

//... 
ContentPanel nestedPanel = new ContentPanel(new FormLayout(); 
nestedPanel.setHeading("Nested Panel"); 

TextField nestedField = new TextField(); 
nestedField.setFieldLabel("Nested Field"); 

nestedPanel.add(nestedField); 
//... 

外场仍会管理任何约束力,并嵌套场看起来好像他们是在FormPanel中。如果不使用FormPanel的其他功能,通常使用ContentPanel(或LayoutContainer,如果您不需要边框/标题)使用FormLayout会更有意义。

+0

感谢您扩展的选择是:) – Rachel 2012-02-07 17:37:17

相关问题