Ne güvenilir bir şekilde çalışır pencere düzeyinde boyutlandırma dinleyicidir:
Window.addResizeHandler(new WindowResizeHandler())
Kişisel boyutlandırma işleyicisi kullanıcı tarayıcı penceresini boyutlandırdığında adı verilecek:
public void onResize(ResizeEvent event)
Sen hiç event.getHeight()
ve event.getWidth()
kullanabilirsiniz güncellenmiş pencere boyutlarını edinin.
Yalnızca bu olayı bir bütün olarak ele aldığınız için, yaymak istediğiniz bileşenlere kendi yayılımınızı yapmalısınız. Genelde sadece bir doLayout()
yöntemimi kendim ararım. Bu yöntem, yeniden boyutlandırma olayının yüksekliğine ve genişliğine bile gerek duymaz; çünkü DLH zaten yorumda bulunduğunda, bildirimlerinizi aldığınızda bileşenlerin çoğunu isteyebilir ve hesaplamalarınızı bununla yapabilirsiniz.
Maalesef bazı tarayıcılar onResize olayını çok sık yapmıyor. Güncellemelere karşı çıldırmamaya çalışırken, bazen "saniyeler" için beklerken uygulamanızı görünür bir şekilde çirkin bir şekilde bırakarak bir kaç saniyeliğine etkinliğe devam edebilirler. Bu nedenle, mümkün olduğunda, "CSS" savaşı, tablolardaki tablolara bağlı olarak, düzeninizi CSS'ye bırakmanız gerekebilir.
Sonuçta, tarayıcıyı VerticalPanel'deki değişikliklere (boyutlandırmaya ihtiyacım olan bir tür otomatik boyutlandırma özelliği) göre boyutlandırmak istiyorum. Bu değişiklikler esas olarak VerticalPanel tarafından bulunan widget'ların yeniden boyutlandırılmasıyla gerçekleştirilir. Örneğin, katlanabilir satırları olan bir TreeGrid widget'ım var. Kullanıcı bir satırı genişletirse/daraltırsa, muhafazanın yüksekliğini değiştirir. Sanırım tavsiyelerinizi alabilir ve eklenen widget'lardaki değişiklikleri dinlemek için VerticalPanel'i genişletebilirim. Ancak problem, panelin yüksekliğini piksel olarak elde etmek için bir işlev olmamasıdır (en azından benim bilgimize). – P4ndaman
Sadece piksel cinsinden yükseklik elde etmek için UIObject sınıfından getOffsetHeight() öğesini çağırın. – DLH
Heh bunu yeni öğrendim, teşekkürler. – P4ndaman