2012-03-16 11 views
1

GWTで、ノブpf SplitLayoutPanelがドラッグまたは押されていることを検出するハンドラを持つことは可能ですか?GWT Handler to SplitLayoutPanel drag

ありがとうございました。

答えて

1

私はあなたがDockLayoutPanelのonResize()継承されたメソッドをオーバーライドすることでそれを行うことができます、と思う:

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

このイベントは、分割レイアウトパネルではトリガされません。スプリッターをドラッグすると、パン自体のサイズが変更されません。 –

+1

私はこのアイデアを試して答えとして投稿した解決策を考え出しました。 –

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