2014-06-12 4 views
0

GWT에서는 기본 패널의 중첩을 다음과 같이 할 수 있습니까?GWT의 기본 패널 중첩

<g:HTMLPanel> 
    <g:HTMLPanel> 
     ....... 
    </g:HTMLPanel> 
    <g:ScrollPanel> 
    <g:HTMLPanel> 
     ........ 
    </g:HTMLPanel> 
    </g:ScrollPanel> 
</g:HTMLPanel> 

제 2 차 HTML 패널을 스크롤해야합니다. 내 UIBinder에는 상위 HTMLPanel 아래에 두 개의 하위 HTMLPanels이 포함됩니다. 하지만 스크롤 가능한 두 번째 htmlpanel이 필요합니다.

+0

테스트를 거쳤지만 작동하지 않는 것 같습니다. 당신의 짧은 대답을 알고 싶어요. 어떻게 일하게 되죠? – Jain

답변

0

GWT의 패널은 부모에게서 크기를 받거나 자녀에게 크기를 제공합니다. 예를 들어 HTMLPanel을 RootPanel에 추가하면 RootPanel은이 HTMLPanel에 자체 크기 (브라우저보기와 동일)를 제공합니다.

그러나 HTMLPanel은 ProvidesResize() 인터페이스를 구현하지 않습니다. 따라서 다른 HTMLPanel과 ScrollPanel을 추가하면이 패널의 초기 높이가 0입니다. 그 후에이 패널들은 그들 자신의 자녀들로부터 그들의 높이를 얻습니다.

즉, ScrollPanel은 더 많은 콘텐츠를 추가 할 때 계속 확장되며 스크롤을 시작하지 않습니다. 이 문제를 해결할 수있는 두 가지 옵션이 있습니다.

먼저 ScrollPanel에서 높이를 설정할 수 있습니다 (예 : height = "100px").

둘째 HTMLPanel 대신보기 패널을 LayoutPanel로 사용하고 HTMLPanel 및 ScrollPanel을이 LayoutPanel의 다른 레이어에 추가 할 수 있습니다. 각 레이어는 자식에게 크기를 제공합니다.

두 경우 모두 ScrollPanel의 지정된 높이 (픽셀, 퍼센트, ems 등)가 지정되므로 자식 높이가 자체 높이를 초과하면 스크롤이 시작됩니다.

+0

Thanks @Andrei. 너는 정확히 놓친 것을 지적했다. – Jain

1

난 그냥 새로운 GWT 프로젝트와

UiBinder 파일 생성 :

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui"> 
    <ui:style> 
    .important { 
     font-weight: bold; 
    } 
    </ui:style> 
    <g:HTMLPanel> 
     <g:HTMLPanel> 
     First panel 
    </g:HTMLPanel> 
    <g:ScrollPanel height="100px"> 
    <g:HTMLPanel> 
      aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/> 
      aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/> 
      aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/> 
      aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/> 
    </g:HTMLPanel> 
    </g:ScrollPanel> 
    </g:HTMLPanel> 

</ui:UiBinder> 

그리고 자바 파일

public class RetaTest extends Composite implements HasText { 

    private static RetaTestUiBinder uiBinder = GWT 
      .create(RetaTestUiBinder.class); 

    interface RetaTestUiBinder extends UiBinder<Widget, RetaTest> { 
    } 

    public RetaTest() { 
     initWidget(uiBinder.createAndBindUi(this)); 
    } 


    public RetaTest(String firstName) { 
     initWidget(uiBinder.createAndBindUi(this)); 
    } 


    @Override 
    public String getText() { 
     // TODO Auto-generated method stub 
     return null; 
    } 


    @Override 
    public void setText(String text) { 
     // TODO Auto-generated method stub 

    } 

} 

을하고 작동

public void onModuleLoad() { 

    RootPanel.get().add(new RetaTest()); 
    } 

을는 onModuleLoad. TestPicture

+1

자바 코드로 작업한다는 것을 알고 있습니다. 하지만 다시 질문을 읽어주세요. 나는 UIBinder로 물어 보았습니다. – Jain

+1

UiBinder로 시도해 보았습니다. –

+0

@Ovi .. 귀하의 노력에 감사드립니다. 높이 = "100px"를 스크롤 패널에 추가하는 것은 실수였습니다. – Jain

0

스크롤 패널의 너비를 고정하지만 해당 하위 HTML 패널의 너비를 고정하지 마십시오. 그렇다면 그것이 작동합니다. 코드에서 너비 속성을 수정하는 것 외에는 문제가 없습니다.

이것은 문제를 정확하게 해결하는 방법입니다. 그러나 이것을 넘어 무엇을 이해하기 위해서는 Andrevi Glovin이 제시 한 첫 번째 대답을 읽으십시오.