1

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

助けてくれてありがとう。

4

2 に答える 2

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
            }
        });
    }
}

スプリッターをドラッグすると何度も起動するため、サイズ変更イベントで必要な処理を実行するには、遅延コマンドを使用することをお勧めします。

これを使用して、メニューパネルの幅をユーザーの設定に保存します。

于 2013-06-03T14:08:24.217 に答える
1

DockLayoutPanelのonResize()継承メソッドをオーバーライドすることでそれができると思います 。

  SplitLayoutPanel splitLayoutPanel = new SplitLayoutPanel(){
            @Override
            public void onResize() {
                super.onResize();
                Window.alert("resized");
            }
        };  
于 2012-03-16T11:05:15.393 に答える