2012-03-16 79 views

回答

1

我想,你可以通過重寫onResize()繼承DockLayoutPanel的方法做到這一點:

SplitLayoutPanel splitLayoutPanel = new SplitLayoutPanel(){ 
      @Override 
      public void onResize() { 
       super.onResize(); 
       Window.alert("resized"); 
      } 
     }; 
+0

此事件未針對拆分佈局面板觸發。拖動分離器時,panl本身不會調整大小。 – 2013-06-03 08:32:55

+1

我玩過這個想法,想出了一個我發佈爲答案的解決方案。 – 2013-06-03 14:10:30

2

您可以通過添加中間ResizeLayoutPanels做到這一點。

MyComposite.ui.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" 
    xmlns:my="urn:import:my.custom.package.client"> 

<g:SplitLayoutPanel ui:field="splitLayoutPanel"> 
    <g:west size="250"> 
    <g:ResizeLayoutPanel ui:field="leftMenuOuterPanel"> 
      <my:MenuWidget ui:field="menuWidget" /> 
     </g:ResizeLayoutPanel> 
    </g:west> 
    <g:center> 
     <g:ResizeLayoutPanel ui:field="centerOuterPanel"> 
      <my:AwesomeWidget ui:field="centerWidget" /> 
     </g:ResizeLayoutPanel> 
    </g:center> 
</g:SplitLayoutPanel> 

</ui:UiBinder> 

MyComposite.java :

class MyComposite extends Composite{ 
    // fuss with ui binder interfaces 
    // other fuss to declare widgets as @UiField 

    public MyComposite(){ 
     initWidget(uiBinder.createAndBindUi(this)); 
     leftMenuOuterPanel.addResizeHandler(new ResizeHandler(){ 
      public void onResize(ResizeEvent event){ 
       // Here do what you want 
      } 
     }); 
    } 
} 

我會建議使用延遲命令你想要做什麼用resize事件,因爲它拖動時觸發了很多次分配器。

我用它來存儲菜單面板在用戶偏好中的寬度。

+0

這個技巧也解決了一些調整大小看起來很不平坦的問題(在我的情況下,裏面有一個SmartGWT組件)!精彩:D – Donatello 2016-05-31 12:46:07