我试图将一个 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 作为嵌套面板,但标题面板不显示字段标签。
任何关于如何让它发挥作用的建议都将受到欢迎。谢谢:)
最佳答案
正如杰森提到的,<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);
//...
外部字段仍将管理任何绑定(bind),并且嵌套字段看起来就像在 FormPanel 中一样。如果不使用 FormPanel 的其他功能,通常将 ContentPanel(或 LayoutContainer,如果您不需要边框/标题)与 FormLayout 一起使用可能更有意义。
关于GWT - 可以将 FormPanel 嵌套在 FormPanel 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9165081/