2011-10-06 5 views
3

EntryPoint 클래스에서 사용자 정의 빌드 westPanel을로드합니다. 이 WestPanel에서 EntryPoint 클래스에있는 DockLayoutPanel의 중심을 대체하고 싶습니다.GWT에서 DockLayoutPanel의 중앙 패널을 대체하는 방법은 무엇입니까?

public class MainEntryPoint implements EntryPoint { 
    private VerticalPanel mainPanel = new VerticalPanel(); 
    private DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM); 
    private NorthMenu northMenu = new NorthMenu(); 
    private VerticalPanel mainPanel = new VerticalPanel(); 
    //other panels 

    @Override 
    public void onModuleLoad() { 
     dockLayoutPanel.addNorth(northMenu, 40); 
     dockLayoutPanel.add(mainPanel); 
     //add other panels 
     RootLayoutPanel panel = RootLayoutPanel.get(); 
     panel.add(dockLayoutPanel);  
    } 
} 

WestPanel가 MyOtherPanel와 DockLayout의 mainPanel를 교체해야합니다 :

여기 내의 EntryPoint 클래스입니다

public class WestMenu extends Composite { 
    private StackLayoutPanel stackLayoutPanel = new StackLayoutPanel(Unit.EM); 
    public WestMenu(){ 
     Tree configuration = new Tree(); 
     configuration.addSelectionHandler(new SelectionHandler(){ 
      @Override 
      public void onSelection(SelectionEvent event) { 
       MyOtherPanel builderPanel = new MyOtherPanel(); 
       RootLayoutPanel panel = RootLayoutPanel.get(); 
       DockLayoutPanel dlp = (DockLayoutPanel)panel.getWidget(0); 
       dlp.add(builderPanel); 
      }   
     }); 
     //other init configurations 
     initWidget(stackLayoutPanel); 
    } 
} 

나는 내가 그것을 대체 할 수 없다는 예외를 점점 계속. DockLayoutPanel의 가운데 패널을 대체/변경하는 가장 좋은 방법은 무엇입니까?

감사합니다.

dlp.remove(currentCenterPanel); 

그러나 당신이 만드는 항상 중심 위젯을 추적하고 필요에 따라 즉, 매우 개발자 친화적 아니다 :

답변

10

당신은 (DockLayoutPanel에서 보호 insert 방법의 javadoc 참조) 명시 적으로 중심을 제거해야 추가하기 전에 제거를 요청하십시오. 왜 그들이 이런 식으로했는지 나는 모른다.

또 다른 해결책은 SimpleLayoutPanel을 가운데 위젯으로 설정하고이 패널에 자신의 센터 위젯을 설정하는 것입니다 (setWidget). 그렇게하면 제거 할 필요가 없습니다.

SimpleLayoutPanelActivityManager.setDiplay(...)에 표시하여 구현을 ActivityManager과 결합 할 수도 있습니다. 구현 내용이 응용 프로그램의 주요 내용처럼 보이므로 ActiviyManager이 유용 할 수 있습니다.

+0

덕분에 ... 그 많은 도움 :) 내 디자인은 내가 기다리지 않았으므로 좋지 않았지만 나중에 처리 할 수 ​​있습니다. – user981916

관련 문제