我正在尝试将FormPanel嵌套在另一个FormPanel中。似乎嵌套面板中的任何字段都不会呈现。
此屏幕截图由下面的代码生成:
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作为嵌套面板,但标题面板不显示字段标签。
我们非常欢迎任何关于如何让它发挥作用的建议。谢谢:))
答案 0 :(得分:3)
正如Jason所说,<form>
不能嵌套。 GXT FormPanel
绘制表单作为其工作方式的一部分,因此请考虑以另一种方式绘制此布局。
要模拟FormPanel
的外观,有两个基本步骤。
ContentPanel
,然后将内容添加到该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,如果你不想要border / header)和FormLayout一般更有意义。