के प्रस्तुतकर्ता तंत्र को समझने में कठिनाइयों अक्सर, JTable
या JTree
उपयोगकर्ता का उपयोग करते समय और लिखते हैं कि यह स्वयं का विशिष्ट सेल रेंडरर है।स्विंग के जेटीबल और जेटीआर
DefaultTableCellRenderer
से उपयोगकर्ता के घटक का उत्तराधिकारी होना बहुत आम है, और प्रस्तुतकर्ता विधि getTableCellRendererComponent
लागू करता है। यह पता चला है कि DefaultTableCellRenderer
वास्तव में जेएलएबल से विरासत में मिलता है, इस प्रकार सुपर (जिसे रेंडर विधि पर) कहा जाता है, इस प्रकार स्वयं (यह) लौटाता है और इस प्रकार उपयोगकर्ता का रेंडरर इसी तरह खुद को (यह) भी लौटा सकता है।
और यह सब ठीक काम करता है।
मेरा सवाल यह है कि यह कैसे हो सकता है?
प्रत्येक बार इस विधि को तालिका द्वारा बुलाया जाता है, इसे विभिन्न पैरामीटर दिए जाते हैं, और इन पैरामीटर के फ़ंक्शन के रूप में आउटपुट लेबल बदल दिया जाता है। यदि यह वास्तव में लेबल का एक ही उदाहरण है - क्या इसे इस विधि के अंतिम कॉल के अनुसार बदला नहीं जाना चाहिए? क्या इसका मतलब यह नहीं होगा कि सभी तालिका की कोशिकाएं उसी लेबल उदाहरण से बना संक्रमित हैं, जिसमें समान मूल्य (रेंडरर विधि को अंतिम कॉल का मूल्य) है?
मैं वेब खोज की है, और स्विंग के कोड के भीतर खुदाई, और क्लोन या प्रतिलिपि निर्माता है कि वास्तव में उत्पादन लेबल डुप्लिकेट की किसी भी कार्य नहीं पा सके। मुझे कोई सबूत नहीं मिला कि (शायद) स्विंग प्रत्येक बार स्क्रैच से रेंडरर को फिर से चालू करने के लिए प्रतिबिंब का उपयोग करता है।
मैं स्विंग के tutorial on JTables पढ़ लिया है, और वहाँ मैं अगले लाइनों मिल सकता है:
आप किसी तालिका में प्रत्येक कोशिका एक घटक होने की उम्मीद कर सकते हैं। हालांकि, प्रदर्शन कारणों से, स्विंग टेबल अलग-अलग लागू किए जाते हैं। इसके बजाए, एक ही सेल रेंडरर आमतौर पर उसी प्रकार के डेटा वाले सभी कक्षों को आकर्षित करने के लिए उपयोग किया जाता है। आप रेंडरर को कॉन्फ़िगर करने योग्य स्याही स्टैंप के रूप में सोच सकते हैं कि तालिका प्रत्येक सेल पर उचित स्वरूपित डेटा को मुद्रित करने के लिए उपयोग करती है। जब उपयोगकर्ता किसी सेल के डेटा को संपादित करना शुरू करता है, तो सेल संपादक सेल के संपादन व्यवहार को नियंत्रित करते हुए सेल पर ले जाता है।
वे संकेत देते हैं कि वास्तव में जो मैं कह रहा हूं वह सही है, लेकिन यह समझ में नहीं आता कि यह वास्तव में कैसे पूरा किया जा रहा है।
मुझे यह नहीं मिल रहा है। क्या आप में से कोई भी हो सकता है
+1 स्क्रीनशॉट रूपक एक अच्छा है। मैंने सोचा कि सबसे ज्यादा इस्तेमाल किया जाने वाला एक 'टिकट' था लेकिन स्क्रीनशॉट अधिक स्पष्ट हो सकता है – Robin
धन्यवाद। रूपक रूप से चाल है :)। अब यह समझा जाता है। –