स्टाइलड डॉक्यूमेंट और जेटीक्स्टपेन के बीच संबंधों के बारे में प्रश्न, और इंटरफ़ेस का उचित उपयोग - जावा, स्विंग, क्लास, इंटरफेस, स्टाइलड डॉक्यूमेंट

मैं जावा के लिए नया हूं और जावा स्विंग जीयूआई पर काम कर रहा हूं। हाल ही में मैंने एक पोस्ट पढ़ा: एक JTextArea या JTextPane में क्षैतिज पाठ - क्षैतिज पाठ संरेखण

अंदर समाधान पूरी तरह से काम किया लेकिन मेरे पास पूछने के लिए कुछ वैचारिक प्रश्न हैं।

मैंने इंटरफेस और कक्षाओं के परिचय को पढ़ाओरेकल वेबसाइट में। यह कहा गया है कि इंटरफ़ेस में खाली निकायों के साथ विधियों का एक सेट होता है, फिर इस तरह के इंटरफ़ेस को लागू करने वाले वर्ग को सफलतापूर्वक अनुपालन के लिए इंटरफ़ेस में उल्लिखित सभी विधियों को घोषित करने की आवश्यकता होगी।

यहां मेरा प्रश्न आता है: दस्तावेजों के माध्यम से पढ़ने के बाद, मुझे पता था कि StyledDocument एक इंटरफ़ेस है, लेकिन निम्न कोड का क्या अर्थ है?

StyledDocument doc = textPane.getStyledDocument();

मेरी व्याख्या यह है कि, मुझे लगता है कि एक JTextPane आंतरिक रूप से स्टाइलड दस्तावेज़ को लागू करता है ताकि कोड की यह पंक्ति मौजूदा स्टाइल डॉक्यूमेंट प्राप्त कर सके (लेकिन इसे एक उदाहरण नहीं कहा जाना चाहिए क्योंकि हम इंटरफ़ेस का उदाहरण नहीं बना सकते हैं, मुझे इसका वर्णन कैसे करना चाहिए?)। यदि यह सत्य है, तो JTextPane में स्टाइलड दस्तावेज़ इंटरफ़ेस में परिभाषित सभी विधियां होनी चाहिए।

क्या मैं उपर्युक्त अनुच्छेद में सही हूं?

फिर, मैंने कोड की दो पंक्तियों को लिखने की कोशिश नहीं की:

StyledDocument doc = textPane.getStyledDocument();
doc.setParagraphAttributes(0, doc.getLength(), center, false);

लेकिन मैंने सीधे इस्तेमाल किया:

textPane.setParagraphAttributes(center, false);

और यह भी पूरी तरह से काम किया।

तो, क्या दो कार्यान्वयन के बीच कोई अंतर है?

क्या मेरा कोड ऐसा करने का अच्छा अभ्यास है?

मदद के लिए बहुत बहुत धन्यवाद!

उत्तर:

उत्तर № 1 के लिए 1

मुझे लगता है कि आप पॉलिमॉर्फिज्म की अवधारणा पर फंस गए हैं, इस पर निशान देखें बहुरूपता शुरुआत के लिए।

मेरी व्याख्या यह है कि, मुझे लगता है कि एJTextPane आंतरिक रूप से स्टाइलड डॉक्यूमेंट को लागू करता है ताकि कोड की यह पंक्ति मौजूदा स्टाइल डॉक्यूमेंट प्राप्त कर सके (लेकिन इसे एक उदाहरण नहीं कहा जाना चाहिए क्योंकि हम इंटरफ़ेस का उदाहरण नहीं बना सकते हैं, मुझे इसका वर्णन कैसे करना चाहिए?)। यदि यह सत्य है, तो JTextPane में स्टाइलड दस्तावेज़ इंटरफ़ेस में परिभाषित सभी विधियां होनी चाहिए।

नहीं getStyledDocument विधि एक वस्तु देता है जो लागू करता है StyledDocument इंटरफेस। JTextPane इस कार्यक्षमता को सीधे लागू नहीं करता है, लेकिन ऑब्जेक्ट के उदाहरण के लिए आवश्यकताओं को प्रतिनिधि करता है जो लागू करता है StyledDocument इंटरफेस।

साथ में वे उन साधनों को प्रदान करते हैं जिनके द्वारा स्टाइल टेक्स्ट प्रदर्शित किया जा सकता है। यह एक अवधारणा है मॉडल-व्यू-नियंत्रक प्रतिमान, जहां गैर दृश्य कार्यक्षमता (मॉडल या StyledDocument) दृश्य से अलग है (द JTextPane)

फिर, मैंने कोड की दो पंक्तियों को लिखने की कोशिश नहीं की:

StyledDocument doc = textPane.getStyledDocument();
doc.setParagraphAttributes(0, doc.getLength(), center, false);

लेकिन मैंने सीधे इस्तेमाल किया:

textPane.setParagraphAttributes(center, false);

और यह भी पूरी तरह से काम किया।

तो, क्या दो कार्यान्वयन के बीच कोई अंतर है?

हां और ना। setParagraphAttributes कार्यक्षमता का प्रतिनिधित्व करता है StyledDocument, कोड के नीचे स्निपेट के रूप में, से लिया गया JTextPane यह दर्शाता है:

public void setParagraphAttributes(AttributeSet attr, boolean replace) {
int p0 = getSelectionStart();
int p1 = getSelectionEnd();
StyledDocument doc = getStyledDocument();
doc.setParagraphAttributes(p0, p1 - p0, attr, replace);
}

यह आपके जीवन को थोड़ा आसान बनाने के लिए बस सुविधा विधि के रूप में कार्य करता है

क्या मेरा कोड ऐसा करने का अच्छा अभ्यास है?

मुझे आपके लक्ष्यों को प्राप्त करने के लिए प्रदान की गई कार्यक्षमता का उपयोग करने में कोई समस्या नहीं है।


संबंधित सवाल
सबसे लोकप्रिय