JavaFX

2009-10-07 26 views
10

में नोड का वैश्विक समन्वय प्राप्त करना दृश्य में मुझे नोड की वास्तविक स्थिति कैसे प्राप्त कर सकता है। किसी भी कंटेनर/परिवर्तनों के बावजूद पूर्ण स्थिति।JavaFX

उदाहरण के लिए, मैं एक निश्चित नोड a का अनुवाद करना चाहता हूं ताकि यह अस्थायी रूप से एक और नोड b ओवरलैप कर सके। इसलिए मैं अपनी translateX संपत्ति b.globalX-a.globalX पर सेट करना चाहता हूं।

प्रलेखन कहते हैं:

को परिभाषित करता है एक्स अनुवाद कि लेआउट के उद्देश्य के लिए इस नोड की तब्दील निर्देशांक में जोड़ा जाता है की समन्वय। कंटेनर या लेआउट प्रदर्शन करने वाले समूह लेआउटबाउंड.मिनएक्स के सापेक्ष वांछित लेआउट स्थान पर नोड को स्थानांतरित करने के लिए इस चर के सापेक्ष सेट करेगा।

child.layoutX = finalX - child.layoutBounds.minX; 

है यही कारण है कि, किसी भी नोड के अंतिम निर्देशांक

finalX = node.layoutX + node.layoutBounds.minX 

हालांकि निम्नलिखित कोड चलाने होना चाहिए:

उदाहरण के लिए, अगर बच्चे finalX के अंतिम स्थान होना चाहिए :

var rect; 
Stage { 
    title: "Application title" 
    width: 250 
    height:250 
    scene: Scene { 
     content: [ 
      Stack{content:[rect = Rectangle { width:10 height:10}] layoutX:10} 
     ] 
    } 
} 

println("finalX = {rect.layoutX+rect.layoutBounds.minX}"); 

मुझे finalX = 10.0 के बजाय दस्तावेज़ों के रूप में प्रतीत होता है।

क्या जावाएफएक्स में बिल्कुल अंतिम पोजीशनिंग निर्देशांक प्राप्त करने के लिए कोई स्पष्ट विधि है?

+1

बस सोच, क्या प्रारूप कोड में ऊपर है निम्नलिखित की जाँच कर सकते हैं? यह जावा नहीं है, शायद JSON? –

+0

यह जावाएफएक्स है, जो सूर्य/ओरेकल से एक नई प्रोग्रामिंग भाषा है। –

+0

प्रारूप, मुझे पता है कि यह जावाएफएक्स है, लेकिन यह जावा कोड नहीं है। –

उत्तर

3

एकमात्र समाधान मैंने पाया अब तक

rect.localToScene(rect.layoutBounds.minX, rect.layoutBounds.minY) // a Point2D{x:Float y:Float} object 

कौन सा ऐसा करने के लिए (ध्यान दें कि इस समारोह बाध्य नहीं है) "सर्वश्रेष्ठ" तरीके के रूप में मुझे नहीं लगता है। फिर भी यह जावाएफएक्स 1.2 के लिए काम करता है।

12

सीमा के लिए: JavaFX 1 के लिए

bounds = rect.localToScene(rect.getBoundsInLocal()); 

कार्य और 2.