2011-02-28 3 views
3

나는 ResizeComposite을 확장하고 DockLayoutPanel을 루트로 갖는 복합체를 가지고 있습니다. 나는 RootLayoutPanel에 그것을 직접 붙일 수 있고 DockLayoutPanelProvidesResize이기 때문에 그것은 작동한다.`AcceptResze` (`ScrollPanel` 제외)의`AcceptsOneWidget`도 있습니까?

그러나 GWT 2.2에서는 MVP 기능을 사용하고자하며 RootLayoutPanelActivityManager#setDiplay(AcceptsOneWidget) (다중 위젯 컨테이너이므로)으로 전달할 수 없습니다.

ScrollPanelAcceptsOneWidgetProvidesResizeRequiresResize을 모두 구현하는 이중 요구 사항을 충족하는 것으로 보입니다.

하지만 나는 그것이 '제로 사이즈'을 가지고, 나는 크기 그것을 수동으로 참조하기 위해에 있다고하는 ScrollPanel에 내 위젯을 넣으면 것을 발견하고, 나는 문제가 알고가 있어요 어떤 크기 그것을 제공. 차라리 반드시 스크롤하지 않는 Panel을 원합니다.

답변

2

당신은 인 모든 하위 하위에있는 모든 크기 조정 알림을 전달하기 만하면됩니다. 직접 구현하면 비교적 쉽게 구현할 수 있습니다. ProvidesResize

또는 패널에서 사용 가능한 공간을 모두 차지하려면 ScrollPanel의 너비 및 높이를 "100%"에 설정해보십시오.

마지막으로, 여기에 LayoutPanel 내 구현 AcceptsOneWidget이있다 :

public class PanelForView extends LayoutPanel implements AcceptsOneWidget 
{ 
    IsWidget myWidget = null; 

    @Override 
    public void setWidget(IsWidget w) 
    { 
     if (myWidget != w) 
     { 
      if (myWidget != null) 
      { 
       remove(myWidget); 
      } 

      if (w != null) 
      { 
       add(w); 
      } 

      myWidget = w; 
     } 
    } 

} 

나는 아무 문제없이 개월 내 상용 응용 프로그램에서 이것을 사용하고, 그리고 그것과 그것의 의견을 교환하는 것은 쉽다. 이 코드는 직접 사용해보십시오.

+0

귀하의'PanelForView'은 내가 찾던 정확히! 나는'ScrollPanel'을 가지고 행운을 얻지 못했습니다.'DockLayoutPanel'과의 이상한 상호 작용이 의심 스럽습니다. (나는 더 많이 실험하고 또 다른 질문을 게시 할 것입니다.) 제 컴파일러는 @Overrides 불필요한 것을 발견했습니다 :-) 고마워요. –

+0

좋아요! 'LayoutPanel'의 기본 동작이 여전히 활성화되어 있기 때문에 조심하십시오. 코드의 다른 부분이 이러한 패널 중 하나를 보게된다면 여전히 여러 위젯을 추가하거나 다른 위치에 크기를 매길 수 있습니다. 정말 일관된 'PanelForView'를 만드는 것이 내 필요에 너무 많은 것처럼 보입니다;) –

3

는 GWT 2.3에서 SimpleLayoutPanel가있을 것이다, 설명 :

A simple panel that {@link ProvidesResize} to its one child.