2013-02-09 10 views
5

मैं कैसे एक JavaFX दृश्य बिल्डर के साथ संयोजन के रूप में उपयोग कर सकते हैं fx:include सोच रहा हूँ, इसलिए:JavaFX दृश्य बिल्डर और fx: शामिल

कल्पना कीजिए मैं एक BorderPane (फ़ाइल borderpane.fxml) है। केंद्र खंड में मैं Label रखना चाहता हूं जिसे हालांकि एक अलग FXML फ़ाइल में परिभाषित किया जाना चाहिए, उदा। label.fxml

इस की पहली समस्या: label.fxml को एक कंटेनर (सीमावर्ती) में एकीकृत किया जाएगा, इसे स्वयं की आवश्यकता नहीं है। दृश्यबिल्डर हालांकि केवल कंटेनर होने के लिए लेआउट बनाने का विकल्प प्रदान करता है?

दूसरा समस्या: मैं मैन्युअल label.fxml बना सकते हैं और उसके बाद borderpane.fxml अनुकूलन मैन्युअल label.fxml शामिल करने के लिए। मैं फिर बिना किसी समस्या के Scenebuilder का उपयोग कर borderpane.fxml फ़ाइल लोड कर सकते हैं। लेकिन जब मैं अब लेबल के पाठ बदलने और चुनें "सहेजें", label.fxml संशोधित किया गया है नहीं, लेकिन इसके बजाय borderpane.fxml इस तरह संशोधित किया गया है:

# borderpane.fxml 
<fx:include source="label.fxml" text="the new label text" /> 

नया लेबल पाठ label.fxml, नहीं करने के लिए करने के लिए लिखा जाना चाहिए borderpane.fxml, वर्तमान में क्या किया जाता है।

  • क्या मैं कुछ गलत कर रहा हूं?

  • क्या दृश्यबिल्डर का उपयोग एफएक्स के साथ संयोजन में नहीं किया जाना चाहिए: शामिल है?

  • मुझे अपने जीयूआई के कुछ हिस्सों के लिए अलग नियंत्रक चाहिए, मुझे लगता है कि यह काफी तार्किक/सामान्य है, इसलिए यह व्यावहारिक उपयोग परिदृश्य उम्मीद है कि किसी भी तरह से सीनबिल्डर द्वारा समर्थित है?

उत्तर

1

मुझे दृश्य निर्माता का उपयोग करके एम्बेडेड FXML contols में नोड जोड़ने की किसी भी विधि से अवगत नहीं है।

हालांकि आप जावा कोड का उपयोग कर ऐसा कर सकते हैं। यदि आपकी borderpane.fxml ने एक नियंत्रक को #setCentre नामक विधि के साथ एक नोड जोड़ने के लिए परिभाषित किया है तो आप label.fxml को borderpane.fxml के मूल नियंत्रक में लोड कर सकते हैं और आपके द्वारा परिभाषित विधि का उपयोग करके लेबल जोड़ सकते हैं।

हालांकि एक प्रश्न, क्या आप एक सरलीकृत उदाहरण दे रहे हैं या क्या आप वास्तव में लेबल और सीमा पैनलों के लिए FXML फ़ाइलों को बना रहे हैं? यदि ऐसा है तो मुझे लगता है कि यह वास्तव में आपके नियंत्रण को बड़े नियंत्रण में नियंत्रण जोड़ने से अधिक जटिल बना देगा।

6

ऐसा लगता है कि Scene Builder 2 आपके द्वारा उल्लिखित दोनों मुद्दों को हल किया गया है।

पहली (हल) समस्या: रूट नोड को Pane होना आवश्यक नहीं है। मेनू File > Include > FXML... एक बाहरी FXML फ़ाइल शामिल करने के लिए इस्तेमाल किया जा सकता है: उदाहरण के लिए, यह एक Label

दूसरा (हल) समस्या हो सकता है। शामिल फ़ाइल को संपादित करना संभव नहीं है। वैसे भी, दस्तावेज़ दृश्य में नोड पर राइट-क्लिक करने से "शामिल फ़ाइल संपादित करें" मेनू आइटम दिखाई देगा, जो उस फ़ाइल के लिए एक और दृश्य बिल्डर विंडो खोलता है।

निष्कर्ष में, दृश्य बिल्डर 2 सही ढंग से fx:include तत्व को संभालता है।

+0

अच्छी व्याख्या लेकिन एक समस्या है: यदि आप fxml फ़ाइल शामिल करते हैं तो आप इसे अपने आवेदन में जहां भी चाहें इसे रखने के लिए इसे स्केंस बिल्डर में खींच नहीं सकते! – SlimenTN

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