Ich habe eine Anwendung, die mehrere Windows in einem com.extjs.gxt.desktop.client.Desktop platziert. Ich muss einen Listener anhängen, der die Größe jedes Fensters aufzeichnet, wenn es in der Größe geändert wird. Ich sehe zwei Probleme:Was ist der richtige Weg, um benachrichtigt zu werden, wenn die Größe eines Fensters geändert wird?
Während Verschieben Ereignisse ausgelöst werden, wenn die Fenstergröße verändert wird, erscheinen sie abgefeuert werden, bevor die neue Größe tatsächlich auf das Fenster angewendet wird, so kann ich die neue Größe aus dem nicht anfordern Fenster direkt.
Das WindowEvent, das ich in meinem Listener erhalte, enthält eine Größe von 0x0, unabhängig von der tatsächlichen Größe des Fensters.
Gibt es etwas, das mir hier fehlt?
Hier ist mein befestigen Code:
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);
}
Und die Zuhörer Klasse:
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);
}
}
Vielen Dank für jede Einsicht jemand. Ich habe das Gefühl, dass ich etwas Einfaches vermissen muss.