2015-03-27 8 views
5

मैं सीएसएस चयनकर्ता (: .table-view हर TableView के लिए इस तरह के रूप में) के साथ एक JavaFX आवेदन स्टाइल के बारे में सवाल की एक जोड़ी है।JavaFX: सीएसएस चयनकर्ता के साथ स्टाइलिंग आवेदन

मैंने एक मुख्य सीएसएस-फाइल बनाई है, जिसमें मैं अपने आवेदन के लिए सार्वभौमिक शैली गुणों को परिभाषित करना चाहता हूं। उदाहरण के लिए: प्रत्येक TableView प्रत्येक स्क्रीन में एक ही रंग मिलता है। मैं सिर्फ .fxml फ़ाइल से जुड़े प्रत्येक .css में Main.css आयात करता हूं।

अब मैं एक 'साइडबार' में हर HBox शैली को स्टाइल करना चाहता हूं। मैं इसे इस तरह की कोशिश की है (जैसा कि Oracle की दस्तावेज में सुझाव दिया):

.sidebar > .hbox { 
    /* Just some styling */ 
} 

यह मेरे आश्चर्य करने के लिए काम नहीं है, लेकिन कोड के निम्न भाग काम कर रहे हैं:

.sidebar > HBox { 
    /* Just some styling */ 
} 

.sidebar HBox { 
    /* Just some styling */ 
} 

शायद यह कुछ करने के लिए है इस तथ्य के साथ करें कि .sidebar एक कस्टम शैली है, लेकिन मुझे इसके बारे में निश्चित नहीं है।

तो मेरी प्रश्न हैं:

1. क्यों पहले एक काम नहीं कर रहा?

2. ऐसा करने का तरीका क्या होना चाहिए? आप सीएसएस प्रलेखन HBOX वर्ग कोई शैली वर्ग में परिभाषित किया गया है में देख सकते हैं (.hbox या HBox और > या कुछ भी नहीं के साथ?)

उत्तर

8

। इसलिए आप बस .hbox http://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#hbox

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

तो तुम सभी बटन है कि एक साइडबार आप निम्न कर सकते का सीधा बच्चे हैं का चयन करना चाहते हैं:

. sidebar > .button 

लेकिन क्या तुम सच में एक साइडबार (भले ही वे लिपटे रहे हैं सभी बटन शैली करना चाहते हैं शीशे, आदि) में आप निम्नलिखित चयनकर्ता का उपयोग करने की आवश्यकता है:

.sidebar .button 

अपने HBOX प्रश्न पर वापस यहां तक ​​कि अगर HBOX कोई परिभाषित शैली वर्ग (.hbox) यह एक प्रकार है कि एक के लिए इस्तेमाल किया जा सकता है है चयनकर्ता टाइप करें।

नोड के getTypeSelector विधि एक स्ट्रिंग जो एक सीएसएस प्रकार चयनकर्ता के अनुरूप है रिटर्न: सीएसएस दस्तावेज़ में बताया गया है सभी नोड्स एक प्रकार है। डिफ़ॉल्ट रूप से, यह विधि कक्षा के का सरल नाम देता है। ध्यान दें कि एक आंतरिक वर्ग का सरल नाम या अज्ञात वर्ग एक प्रकार चयनकर्ता के रूप में प्रयोग योग्य नहीं हो सकता है। ऐसे मामले में, इस विधि को सार्थक मूल्य वापस करने के लिए ओवरराइड किया जाना चाहिए।

क्योंकि एचबीओएक्स चयनकर्ता काम कर रहा है।

+1

यही वह जवाब था जिसे मैं ढूंढ रहा था! पहली बार मैंने यह जानकारी देखी है (विशेष रूप से प्रत्यक्ष बच्चों के बारे में और '>' का उपयोग करना)। अजीब बात है कि मैंने कुछ किताबों में लोगों को '.hbox' का उपयोग करके देखा है, जबकि यह काम नहीं कर रहा है। इस उत्तर के लिए बहुत बहुत धन्यवाद! – bashoogzaad

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