2

我正在尝试将 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 作为嵌套面板,但标题面板不显示字段标签。

任何关于我如何使它工作的建议都将受到欢迎。谢谢 :)

4

1 回答 1

3

正如杰森所说,<form>不能嵌套。GXTFormPanel绘制表单作为其工作方式的一部分,因此请考虑以另一种方式绘制此布局。

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

  • 要获取页眉、边框、创建一个ContentPanel并将内容添加到该
  • 要获得绘制字段标签的 GXT 2 布局,请FormLayout在内容面板中使用 a。

这看起来像这样(从你的例子)

//...
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 一起使用可能更有意义。

于 2012-02-07T03:58:48.610 回答