2013-05-01 11 views
8

मैं JDK8 build 87 का उपयोग कर रहा हूं और css stylesheets को गतिशील रूप से जोड़ना और निकालना चाहता हूं जैसे कि वे मेरे पूरे JavaFX एप्लिकेशन द्वारा उपयोग किए जा सकते हैं।पूरे जावाएफएक्स एप्लिकेशन के लिए मैं सीएसएस को गतिशील रूप से कैसे जोड़ूं और हटा सकता हूं?

फिलहाल मैं डिफ़ॉल्ट styleSheet सेट कर रहा हूं इस आदेश का उपयोग:

Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA); 

और फिर जब मैं एक अतिरिक्त सीएसएस शैली पत्रक मैं यह कर जोड़ना चाहते हैं:

com.sun.javafx.css.StyleManager.getInstance.addUserAgentStylesheet(styleSheet); 

यह काम करता है लेकिन मुझे दो समस्याएं हैं। सबसे पहले, यह निजीAPI का उपयोग कर रहा है और दूसरी बार ऐसा करने के बाद इसे हटाने का एक तरीका प्रतीत नहीं होता है (मैं OSGI का उपयोग कर रहा हूं, इसलिए मॉड्यूल आने और जाने के लिए यह आम है)।

2012 के शुरू में सार्वजनिकAPI करने के लिए StyleManager जाने के बारे में बात करते हैं नहीं था लेकिन मुझे यकीन है कि कुछ भी के बारे में क्या हुआ है नहीं कर रहा हूँ।

क्या कोई styleSheets जोड़ने के लिए किसी सार्वजनिक विधि के बारे में जानता है जैसे कि वे पूरे JavaFX एप्लिकेशन पर लागू होते हैं? इसके अलावा कोई उन्हें कैसे हटाएगा? के रूप में Boomah बताते

// load default global stylesheet 
Application.setUserAgentStylesheet(null); 
// add custom global stylesheet 
StyleManager.getInstance().addUserAgentStylesheet(AQUA_CSS_NAME); 

हालांकि, StyleManager.getInstance().addUserAgentStylesheet का हिस्सा नहीं है:

+1

ने नया टैग जोड़ा, सुझाव के लिए धन्यवाद। –

+0

बीटीडब्ल्यू, यदि आपको कोई उचित समाधान नहीं मिलेगा, तो आप javafx-jira bugtracker पर tweak या RFE के लिए देखने का प्रयास कर सकते हैं, और यदि आपको कोई भी नहीं मिलेगा - तो अपनी चिमटा फ़ाइल करें - जबकि देर हो चुकी है .. –

उत्तर

3

(मैं नए JavaFX -8 टैग बनाने के लिए विशेषाधिकार नहीं है) Global Stylesheet for your GUI application के अनुसार जावाएफएक्स एपीआई, इसलिए इस विधि की वास्तव में अनुशंसा नहीं की जाती है कि इसका उपयोग सीधे उपयोगकर्ता कोड से किया जाए। इसके अतिरिक्त, यह केवल वैश्विक स्टाइलशीट जोड़ने के लिए काम करता है और स्टाइलशीट जोड़े जाने के बाद ऐसी स्टाइलशीट को हटाने के लिए नहीं।


अधिक साहसिक StyleManager कोड को संशोधित वैश्विक स्टाइलशीट को हटाने का समर्थन करने के लिए और Application वर्ग स्रोत कोड को संशोधित जो का उपयोग करता है नई सुविधा के लिए एक सार्वजनिक एपीआई प्रदान करने के लिए द्वारा Boomah के सुझाव सुविधा को जोड़ने का एक पैच बना सकते हैं StyleManager अपडेट किया गया, फिर JavaFX प्लेटफ़ॉर्म में शामिल करने के लिए openjfx-dev पर पैच सबमिट करें।


इस बीच में आप मैन्युअल रूप से अपने आवेदन के दृश्यों में से प्रत्येक पर अपने उपयोगकर्ता स्टाइलशीट सेट कर सकते हैं - दर्द की तरह है, लेकिन वहाँ आप कर रहे हैं। । ।

+0

I ऊपर दिए गए मेरे उदाहरण में दिखाए गए अनुसार STYLESHEET_MODENA को शीर्ष स्तर की स्टाइल शीट सेट करने में खुशी हो रही है। यह StyleManager है जो निजी एपीआई है और यहां तक ​​कि सेट होने के बाद अतिरिक्त स्टाइल शीट को हटाने की क्षमता भी नहीं है। – Boomah

+0

सही, अपनी इच्छित सुविधा प्राप्त करने के लिए, आपको सुविधा को लागू करने के लिए एक पैच सबमिट करना होगा या [एक सुविधा अनुरोध बनाएं] (https://javafx-jira.kenai.com) – jewelsea

+0

ठीक है, मैंने जोनाथन गिल्स से बात की इस। उन्होंने बस सभी दृश्यों को जोड़ने का सुझाव दिया।यह एक बड़ी समस्या नहीं है क्योंकि मेरे पास उन सभी तक पहुंच है, ऐसा लगता है कि ऐसा करने का एक बेहतर तरीका होना चाहिए। धन्यवाद – Boomah

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

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