2012-02-06 3 views
2

다른 FormPanel 안에 FormPanel을 중첩 시키려고합니다. 중첩 된 패널의 필드는 절대로 렌더링되지 않습니다. 중첩 된 필드가 중첩 된 패널에 표시되지 않는 이유GWT - FormPanels 안에 FormPanels를 중첩 할 수 있습니까?

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

사람이 설명 할 수 :

이 스크린 샷은 아래의 코드에 의해 생성된다?

또한 중첩 패널로 FormPanel 대신 CaptionPanel을 사용했지만 캡션 패널에 필드 라벨이 표시되지 않았습니다.

이 기능을 어떻게 사용할 수 있는지에 대한 제안은 언제든지 환영 할 것입니다. 고맙습니다.

답변

3

제이슨 (Jason)이 언급했듯이 <form>은 중첩 될 수 없습니다. GXT FormPanel은 작동 방식의 일부로 양식을 작성하므로 다른 방식으로이 레이아웃을 그리는 것이 좋습니다.

FormPanel의 모양을 에뮬레이션하려면 두 가지 기본 단계가 필요합니다.

  • ContentPanel를 작성, 헤더, 국경을 얻고, 필드 레이블을 그리기의 GXT 2 레이아웃을 얻으려면 그
  • 에 내용을 추가하려면 컨텐츠 패널에서 FormLayout를 사용합니다.

이 외부 필드는 여전히 어떤 바인딩을 관리하며, 그들이은 FormPanel 것처럼 중첩 된 필드의 모양을

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

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

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

를합니다 (예제) 다음과 같이 보일 것입니다. FormPanel의 다른 기능을 사용하지 않는 경우 일반적으로 FormLayout에 ContentPanel (또는 테두리/머리글을 사용하지 않으려는 경우 LayoutContainer)을 사용하는 것이 좋습니다.

+0

대안을 제공해 주셔서 감사합니다. :) – Rachel