2009-08-18 12 views
7

Sorununuzu ilk olarak şu şekilde açıklayın: Genişlik veya yükseklikteki bir değişiklik nedeniyle yeniden düzenleme sırasında, Java'nın ScrollPaneLayout, görünümünün sınırlarını ayarlamadan ÖNCE, çocukların tercih edilenSize edilmesini ister. GetPreferredSpan çağrılan Metin Bileşenlerinde, bu getPreferredSpan dahili olarak setSize çağrılarını yaptığından düzeni değiştirebilir. Efekt, javax.swing.text.View uzantısının genişletilmesinin, bu durumda ana Bileşenin gerçek boyutunu alacağından emin olamaz. Bir viewVisibleRect, görünümün sınırları henüz ayarlanmadığı için bu site içinde başarısız olur. Yerleşim sürecini engellemek için metin bileşeninin geçerliliğinin kontrol edilmesi, bu senaryoda zaten doğrulandığı için bir seçenek değildir.Bir validateTree sırasında doğru bir görünür rect nasıl edinilir?

Yani, soru şu: Bir JComponent'in sınırlarının güncel olup olmadığını öğrenmek için bir olasılık var mı?

+0

no. fikir ....: P – Epaga

+0

Üzgünüm, hiçbir fikrim yok. "swing" etiketi eklendi ... – MartinStettner

+0

Bu soru çok kafa karıştırıcı. Bunu bizim için temizler misin? – marionmaiden

cevap

1

Belki ScrollPanel alt sınıfını ve "com.mycompany.BoundsSet" gibi özel bir özelliği geçersiz kıldığınızda false olarak ayarlayabilir ve sınırlar ayarlandığında doğru olarak ayarlayabilirsiniz. Sonra görünüm bu özelliği kontrol edebilir ve yanlışsa, ScrollPanel değerini tekrar doğrulayın ve son bilinen tercih edilen boyutu döndürün. İnşallah ScrollPane devam edecek ve sınırlarını belirleyecek, ardından revalidate olayı borudan aşağı inecek ve bayrak temizlenmiş olacak, böylece getBounds() 'a güvenebilirsiniz. Ya da böyle bir şey.

0

Component#isValid yöntemini kullanamazsınız. Yöntem true olarak geri dönerse, bu, bileşenin doğru şekilde boyutlandırıldığı ve ana öğenin kapsayıcısında konumlandırıldığı ve tüm çocukların da geçerli olduğu anlamına gelir.