GWT - 可以将 FormPanel 嵌套在 FormPanel 中吗?

标签 gwt gxt formpanel

我试图将一个 FormPanel 嵌套在另一个 FormPanel 中。似乎嵌套面板中的任何字段都不会被渲染。

此屏幕截图是由下面的代码生成的:

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

任何关于如何让它发挥作用的建议都将受到欢迎。谢谢:)

最佳答案

正如杰森提到的,<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/

相关文章:

javascript - ExtJS v3 - 从表单面板内的网格面板访问数据

java - 无法一起发送列表框和文件

gwt - TabLayoutPanel 不显示小部件,仅选项卡项目可见

java - 如何在 GWT 中居中弹出/对话框窗口?

java.lang.NullPointerException : No API environment is registered for this thread

css - gwt 中建议框的滚动错误

java - Ext GWT 2.2.5 折叠日期选择器

javascript - 在 GWT 中删除 StoreFilterField 的焦点样式

gwt - 网格行上的 Ext GWT (GXT) 工具提示

java - 如何在GWT中获取服务器端的所有ListBox值