페이지를 채우기 위해 GWT에서 유체 패널을 생성하시겠습니까?

StackOverflow https://stackoverflow.com/questions/86901

  •  01-07-2019
  •  | 
  •  

문제

실제로 크기를 설정하지 않고도 GWT의 패널이 페이지를 채우고 싶습니다.이를 수행할 수 있는 방법이 있습니까?현재 나는 다음을 가지고 있습니다 :

public class Main  implements EntryPoint
{
    public void onModuleLoad()
    {
        HorizontalSplitPanel split = new HorizontalSplitPanel();
        //split.setSize("250px", "500px");
        split.setSplitPosition("30%");

        DecoratorPanel dp = new DecoratorPanel();
        dp.setWidget(split);

        RootPanel.get().add(dp);
    }

}

이전 코드 조각에서는 아무 것도 표시되지 않습니다.누락된 메서드 호출이 있나요?

감사해요.


업데이트 17 sep.

양쪽에 몇 개의 버튼(명시적으로 크기 설정)을 배치했는데 여전히 작동하지 않습니다.FillLayout 클래스나 setFillLayout 메서드, setDockStyle(DockStyle.Fill) 또는 이와 유사한 것이 없다는 사실에 정말 놀랐습니다.어쩌면 불가능할까요?하지만 GWT의 인기만큼은 가능할 것이라고 생각합니다.

업데이트 18 sep.

RootPanel 너비와 높이를 100%로 설정해 보았으나 여전히 작동하지 않았습니다.그래도 제안해 주셔서 감사합니다. 아마도 효과가 있을 것 같았습니다.다른 제안은 없나요??

도움이 되었습니까?

해결책

Google은 FAQ 중 하나에서 귀하의 질문의 주요 부분에 답변했습니다.http://code.google.com/webtoolkit/doc/1.6/FAQ_UI.html#How_do_I_create_an_app_that_fills_the_page_vertically_when_the_b

가장 중요한 점은 높이를 100%로 설정할 수 없다는 것입니다. 다음과 같이 해야 합니다.

final VerticalPanel vp = new VerticalPanel();
vp.add(mainPanel);
vp.setWidth("100%");
vp.setHeight(Window.getClientHeight() + "px");
Window.addResizeHandler(new ResizeHandler() {

  public void onResize(ResizeEvent event) {
    int height = event.getHeight();
    vp.setHeight(height + "px");
  }
});
RootPanel.get().add(vp);

다른 팁

Ben의 답변은 매우 훌륭하지만 구식이기도 합니다.GWT 1.6에서는 크기 조정 핸들러가 필요했지만 현재는 2.4입니다.당신은 사용할 수 있습니다 DockLayoutPanel 콘텐츠가 페이지를 세로로 채우도록 합니다.참조 샘플 메일 앱, 이 패널을 사용합니다.

내 생각에는 분할(split.setLeftWidget(widget), Split.setRightWidget(widget) 또는 Split.add(widget))의 왼쪽 및/또는 오른쪽에 무언가를 넣어야 할 것 같습니다. 먼저 왼쪽에 추가한 다음 오른쪽) 무엇이든 표시되도록 합니다.

위젯을 추가하기 전에 루트 패널의 너비 및/또는 높이를 100%로 설정해 보십시오.

패널은 표시되는 가장 작은 너비로 자동으로 크기가 조정됩니다.따라서 SplitPanel을 포함하여 RootPanel에 추가하는 모든 패널의 크기를 100%로 조정해야 합니다.RootPanel 자체는 크기 조정이 필요하지 않습니다.그러니 시도해 보세요:

split.setWidth("100%");
split.setHeight("100%");

에 대한 문서 데코레이터패널 말한다:

DecoratorPanel의 너비나 높이를 설정하는 경우 middleCenter 셀이 사용 가능한 공간을 모두 차지하도록 middleCenter 셀의 높이와 너비를 100%로 설정해야 합니다.DecoratorPanel의 너비와 높이를 설정하지 않으면 내용이 촘촘하게 래핑됩니다.

문제는 DecoratorPanel middleCenter 셀이 기본적으로 내용을 꽉 채우고 SplitPanel이 "100%" 스타일 크기 설정을 허용하지 않는다는 것입니다.원하는 작업을 수행하려면 CSS에서 테이블 스타일을 적절하게 설정하세요.

.gwt-decoratorpanel .middlecenter {height :100%;너비:100%;}

나에게 너비를 다음과 같이 설정하면 작동하지 않습니다.

panel.setWidth("100%");

패널은 어디서 왔는지 알 수 없는 임의의 크기를 갖는 VerticalPanel입니다.그러나 @Ben Bederson이 다음 줄을 추가한 후 댓글을 달았을 때 매우 효과적이었습니다.

panel.setWidth(Window.getClientWidth() + "px");

이것만, 다른 건 없어요.감사해요

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top