2009-08-18 10 views
7

समस्या का वर्णन करने के लिए सबसे पहले: चौड़ाई या ऊंचाई में बदलाव के कारण पुन: लेआउट के दौरान, जावा के स्क्रॉलपेनलेआउट इसके व्यूपोर्ट की सीमा निर्धारित करने से पहले इसके बच्चों के पसंदीदा आकार का अनुरोध करता है। टेक्स्ट-कंपोनेंट्स पर कॉल करने के लिए getPreferredSpan लेआउट बदल सकता है क्योंकि यह getPreferredSpan कॉल आंतरिक रूप से सेट करें। प्रभाव यह है कि, कोई दृश्य नहीं (javax.swing.text.View को विस्तारित) निश्चित रूप से इस स्थिति में इसके मूल घटक के वास्तविक आकार को पुनर्प्राप्त कर सकता है। एक getVisibleRect इस स्थिति में विफल हो जाएगा क्योंकि व्यूपोर्ट की सीमाएं अभी तक सेट नहीं हैं। लेआउट प्रक्रिया को अवरुद्ध करने के लिए पाठ घटक की वैधता की जांच करना एक विकल्प नहीं है क्योंकि यह इस परिदृश्य में पहले से ही वैध है।वैध ट्री के दौरान सही दृश्यमान आय कैसे प्राप्त करें?

तो सवाल यह है कि क्या यह पता लगाने की संभावना है कि क्या JComponent की सीमाएं अद्यतित हैं?

+0

संख्या। विचार ....: पी – Epaga

+0

क्षमा करें, कोई विचार नहीं है। जोड़ा गया "स्विंग" टैग ... – MartinStettner

+0

यह सवाल बहुत भ्रमित है। क्या आप इसे हमारे लिए साफ़ करेंगे? – marionmaiden

उत्तर

1

शायद तुम ScrollPanel उपवर्ग और जब अवैध गलत पर "com.mycompany.BoundsSet" की तरह एक कस्टम गुण सेट और इसे सेट से सच है जब सीमा सेट कर रहे हैं हो सकता है। फिर दृश्य इस संपत्ति की जांच कर सकता है और यदि यह गलत है, तो स्क्रॉलपनेल को पुन: सत्यापित करें, और अंतिम पता पसंदीदा आकार वापस करें। उम्मीद है कि, स्क्रॉलपैन आगे बढ़ेगा और इसकी सीमा तय करेगा, फिर पुनर्मूल्यांकन कार्यक्रम पाइप नीचे आ जाएगा, और ध्वज साफ़ कर दिया जाएगा, जिससे आप GetBounds() पर भरोसा कर सकते हैं। या कुछ इस तरह का।

0

क्या आप बस Component#isValid विधि का उपयोग नहीं कर सकते। यदि विधि सही हो जाती है तो इसका मतलब है कि घटक सही ढंग से आकार दिया गया है और इसके मूल संयोजक के भीतर स्थित है और इसके सभी बच्चे भी मान्य हैं।

संबंधित मुद्दे