2011-01-10 5 views
1

私はcom.extjs.gxt.desktop.client.Desktopの中にいくつかのWindowsを配置するアプリケーションを持っています。私はそれがサイズ変更されたときに各ウィンドウのサイズを記録するリスナーを添付する必要があります。私は2つの問題を見ている:ウィンドウのサイズを変更したときに通知される正しい方法は何ですか?

  1. 移動イベントは、ウィンドウのサイズが変更されたとき、彼らは新しいサイズが実際のウィンドウに適用される前に発生しているように見える解雇されているので、私から新しいサイズを要求することはできませんがウィンドウを直接開きます。

  2. リスナーで受信したWindowEventのサイズは、実際のウィンドウのサイズに関係なく0x0です。

ここに何か不足していますか?

ここに私の添付のコードです:

protected void addWindowListeners(Window w, 
     String uid, WindowData windowData) 
{ 
    WindowChangeListener l = new WindowChangeListener(uid, windowData); 
    w.addWindowListener(l); 
    // Add this again since the default WindowListener doesn't support the Move event. 
    w.addListener(Events.Move, l); 
} 

とリスナークラス:誰もが持っている任意の洞察力のための

protected class WindowChangeListener 
    extends WindowListener 
    implements Listener<WindowEvent> 
{ 

    @Override 
    public void windowHide(WindowEvent we) 
    { 
     updateWindowData(we); 
    } 

    @Override 
    public void windowShow(WindowEvent we) 
    { 
     updateWindowData(we); 
    } 

    public void windowMove(WindowEvent we) 
    { 
     updateWindowData(we); 
    } 

    protected void updateWindowData(WindowEvent we) 
    { 
     // Here's the part that needs to get notified with the new size. 
    } 

    @Override 
    public void handleEvent(WindowEvent we) 
    { 
     if(we.getType() == Events.Move) 
      windowMove(we); 
     else 
      super.handleEvent(we); 
    } 
} 

おかげで。私は単純なものを見逃しているように感じる。

答えて

1

は、私が実際に煎茶のフォーラムで魔法を与えられた。

protected void addWindowListeners(Window w, 
     String uid, WindowData windowData) 
{ 
    w.addListener(Events.Resize, new Listener<WindowEvent>() { 

     @Override 
     public void handleEvent(WindowEvent we) 
     { 
      System.out.println("Resize event: " + we); 
      System.out.println(" Size in event: " + we.getWidth() + "x" + we.getHeight()); 
      System.out.println(" Size of window: " + we.getWindow().getSize()); 
     } 

    }); 
} 
http://www.sencha.com/forum/showthread.php?121249-What-s-the-right-way-to-be-notified-when-a-Window-is-resized&p=561340&posted=1#post561340

は私がウィンドウ上のresizeイベントをリッスンできることが判明します