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);

ネストされたフィールドがネストされたパネルに表示されない理由を誰かが説明できますか?

ネストされたパネルとしてFormPanelの代わりにCaptionPanelを使用しようとしましたが、キャプションパネルにフィールドラベルが表示されません。

これを機能させる方法についての提案は大歓迎です。ありがとうございました :)

4

1 に答える 1

3

ジェイソンが述べたように、<form>ネストすることはできません。GXTFormPanelは、その動作の一部としてフォームを描画するため、このレイアウトを別の方法で描画することを検討してください。

の外観をエミュレートするにはFormPanel、2つの基本的な手順があります。

  • ヘッダー、境界線を取得し、を作成しContentPanel、それにコンテンツを追加するには
  • フィールドラベルを描画するGXT2レイアウトを取得するFormLayoutには、コンテンツパネルでを使用します。

これは次のようになります(あなたの例から)

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

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

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

外側のフィールドは引き続きバインディングを管理し、ネストされたフィールドはFormPanelにあるかのように見えます。FormPanelの他の機能を使用しない場合は、一般に、FormLayoutでContentPanel(またはボーダー/ヘッダーが必要ない場合はLayoutContainer)を使用する方が理にかなっています。

于 2012-02-07T03:58:48.610 に答える