2011-03-25 10 views
0

StackPanel 레이아웃을 사용하는 데 문제가 있습니다. 작동하지 않습니다. 제목 만 표시하고 레이블은 표시하지 않습니다. 심지어 문서에서 예제가 작동하지 않습니다StackLayoutPanel 사용 중 문제가 발생했습니다.

http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/ui/StackLayoutPanel.html

자바 :

import com.google.gwt.core.client.GWT; 
import com.google.gwt.uibinder.client.UiBinder; 
import com.google.gwt.user.client.ui.Composite; 
import com.google.gwt.user.client.ui.HasText; 
import com.google.gwt.user.client.ui.Widget; 

public class NavigationWidget extends Composite implements HasText { 

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

    interface NavigationWidgetUiBinder extends 
      UiBinder<Widget, NavigationWidget> { 
    } 

    public NavigationWidget() { 
     initWidget(uiBinder.createAndBindUi(this)); 

    } 

    public void setText(String text) { 
    } 

    public String getText() { 
     return null; 
    } 

} 

XML :

<!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"> 

    <g:HTMLPanel> 
     <g:StackLayoutPanel unit='PX'> 

      <g:stack> 
       <g:header size='30'> 
        People 
       </g:header> 
       <g:VerticalPanel> 
        <g:Label>People Item 1</g:Label> 
        <g:Label>People Item 2</g:Label> 
        <g:Label>People Item 3</g:Label> 
        <g:Label>People Item 4</g:Label> 
       </g:VerticalPanel> 
      </g:stack> 

      <g:stack> 
       <g:header size='30'> 
        Groups 
       </g:header> 
       <g:VerticalPanel> 
        <g:Label>Group Item 1</g:Label> 
        <g:Label>Group Item 2</g:Label> 
        <g:Label>Group Item 3</g:Label> 
        <g:Label>Group Item 4</g:Label> 
       </g:VerticalPanel> 
      </g:stack> 

      <g:stack> 
       <g:header size='30'> 
        Settings 
       </g:header> 
       <g:VerticalPanel> 
        <g:Label>Item 5</g:Label> 
        <g:Label>Item 6</g:Label> 
        <g:Label>Item 7</g:Label> 
        <g:Label>Item 8</g:Label> 
       </g:VerticalPanel> 
      </g:stack> 

     </g:StackLayoutPanel> 

    </g:HTMLPanel> 
</ui:UiBinder> 

답변

4

모든 LayoutPanel들, ProvidesResize를 구현하는 컨테이너에 있어야합니다 또는 코드에서 크기를 명시 적으로 설정해야합니다. 가장 쉬운 방법은 StackLayoutPanel의 크기를 명시 적으로 설정하는 것입니다. <StackLayoutPanel> 요소에 height="100%"을 추가하면됩니다.

더 많은 제어를 위해, ResizeCompositeComposite 기본 클래스를 변경하고 <g:HTMLPanel> 요소를 제거 - 바로 StackLayoutPanel 당신의 ui.xml 파일의 루트 요소합니다. , http://code.google.com/webtoolkit/doc/latest/DevGuideUiPanels.html

+0

감사를 참조하면, RootPanel.get()에 추가 할 수 있지만 더 많은 정보 대신에 RootLayoutPanel.get()

않을 것, 예를 들면 - 당신은 또한 당신이 유일한 LayoutPanel들에 NavigationWidget를 사용하는지 확인해야합니다 나는 StackPayel을 RootPanel에 넣으려고했다. 이제 작동합니다! – Mark

관련 문제