2012-06-20 6 views
5

यह सवाल बहुत ही तकनीकी प्रतीत नहीं हो सकता है लेकिन, जिज्ञासा से बाहर, मुझे लगता है कि जानना चाहता हूँ:कैसे एक असली चित्रमय आवेदन में एक स्विंग कोड बारी करता

कैसे नंगे/कच्चे स्विंग कोड मुझे द्वारा लिखित, बारी एक अद्भुत ग्राफिकल आवेदन में?

उदाहरण के लिए:

  • की तरह जब हम एक JFrame सामने प्रस्तुत करें, या जब हम उस पर एक JButton जगह। यह कौन करता है? ओएस या जावा या जेवीएम।

  • रंग कौन आते हैं?

  • दृश्यों के पीछे क्या प्रक्रिया चल रही है?

मैं इस पूछना शायद क्योंकि मेरे जीवन में अपनी पहली बार है कि मैं एक वास्तविक दुनिया चित्रमय आवेदन किया और इन सवालों मेरे मन में ऊपर पॉप!

अग्रिम धन्यवाद!

+0

ओएस के माध्यम से जेवीएम :) – GETah

उत्तर

5

स्विंग में, सभी जीयूआई घटक जावा में पूरी तरह से लिखे गए हैं और जावा का उपयोग करके प्रस्तुत किए जाते हैं। उदाहरण के लिए, जेबटन को जावा द्वारा खींचा जाएगा और किसी भी आंतरिक ओएस सामान से नहीं। इस प्रकार, स्विंग घटकों को "हल्के वजन घटकों" कहा जाता है क्योंकि वे ओएस (या किसी देशी विजेट टूलकिट) के बजाय जावा द्वारा प्रबंधित और प्रस्तुत किए जाते हैं।

ध्यान दें कि जावा में एडब्ल्यूटी नामक टूलकिट भी है। स्विंग एडब्ल्यूटी से नेस्टेड और विरासत विधियों पर आधारित है, सिवाय इसके कि यह ओएस का उपयोग करके देशी विजेट बनाता है।

तो किसी बिंदु पर, स्विंग को स्क्रीन पर एक विंडो बनाना होगा और उस पर आकर्षित करना होगा। वास्तव में खिड़की बनाता है जो जादू एडब्ल्यूटी द्वारा संभाला जाता है। ध्यान दें कि JFramejava.awt.Frame से विस्तारित है जिसका अर्थ है कि यद्यपि जावा द्वारा ज्यादातर जेएफआरएएम प्रस्तुत किया जा सकता है, लेकिन इसे भारी वजन वाले मूल ओएस विंडो द्वारा समर्थित किया जाता है।

+1

यह केवल आंशिक रूप से सच है। अंत में, जावा 2 डी एपीआई स्क्रीन पर पेंट करने के लिए ओएस-विशिष्ट फ़ंक्शंस पर निर्भर करता है, और हार्डवेयर-त्वरित ग्राफिक्स (डायरेक्टएक्स, ओपनजीएल, इत्यादि) –

+1

क्या और भी अद्भुत है, यह है कि आप उसी जावा प्रोग्राम को ले सकते हैं , बिना किसी संकलन के, और इसे किसी अन्य ऑपरेटिंग सिस्टम पर चलाएं और यह केवल काम करेगा। – Bill

+0

@ बिल: यदि आप अपने स्विंग ऐप को सभी प्लेटफ़ॉर्म और लाफ़ पर अच्छी तरह से देखना चाहते हैं, तो आप कुछ असली सिरदर्द के लिए हैं :) –

0

मुझे सभी विवरण नहीं पता हैं, लेकिन वास्तविक ग्राफिक्स को JVM के माध्यम से स्विंग/awt संकुल के माध्यम से प्रदर्शित/प्रस्तुत किया जाता है।

1

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

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

धातु और निमुस लाफ 100% जावा 2 डी खींचे गए हैं, इसलिए उनमें से आप को आकर्षित करने के लिए drawRectangle और drawLine जैसी चीजें मिलेंगी। मूल रूप से दिखने और महसूस करने की तरह, विंडोज़, gtk, मौजूदा ऑपरेटिंग सिस्टम थीम तक पहुंचने के लिए मूल विजेट के समान दिखने वाला कुछ आकर्षित करने के लिए। यही कारण है कि वे हमेशा देशी अनुप्रयोगों की तरह नहीं दिखते हैं।

जावा के लिए अन्य गुई टूलकिट भी हैं, जैसे एसडब्ल्यूटी, उदाहरण के लिए, एक्लिप्स में। यह क्या कर रहा है, एडब्ल्यूटी से खिड़की प्राप्त कर रहा है, और उसके बाद 100% देशी विजेट डालने। यह ओएस के साथ बहुत बेहतर एकीकृत है, बेहतर दिखता है, तेजी से काम करता है, कम स्मृति का उपयोग करता है।लेकिन इसके साथ, आपको अपने आवेदन को ओएस विशिष्ट देशी पुस्तकालयों के साथ वितरित करना होगा और स्विंग की तुलना में यह कम अनुकूलन योग्य है।

+0

+1 धातु जावा 2 डी खींचा गया है, निंबस टूटा हुआ है एल एंड एफ :-) – mKorbel

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