У меня есть приложение, которое помещает несколько окон в com.extjs.gxt.desktop.client.Desktop. Мне нужно прикрепить слушатель, который записывает размер каждого окна при изменении его размера. Я вижу две проблемы:
Хотя события Move генерируются при изменении размера окна, они, похоже, срабатывают ДО того, как новый размер фактически будет применен к окну, поэтому я не могу напрямую запросить новый размер из окна.
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 );
}
}
Спасибо за понимание, которое есть у каждого. Я чувствую, что мне не хватает чего-то простого.