2013-05-08 6 views
6

आमतौर पर, जब मैं कक्षा बनाता हूं, उदाहरण के लिए Customer, मैं इसे कुछ डेटा फ़ील्ड देता हूं, यानी public int IdNumber; और कुछ विधियां, यानी public String getName(){...}। लेकिन यह बहुत ज्यादा है। मैं उससे आगे नहीं जा सकता और ग्राफिक्स के साथ खेलना शुरू कर सकता हूं - मैं केवल कक्षा में डेटा को मैनिपुलेट और व्यवस्थित कर सकता हूं।जेएफआरएएम कैसे काम करता है? अंदर गहरी, यह सामान कैसे आकर्षित करता है?

मैं जेफ्रेम के अंदर क्या हो रहा है उसके आसपास अपना सिर नहीं प्राप्त कर सकता। जिसने कक्षा जेएफआरएम लिखा है, उन्होंने एक कक्षा कैसे लिखी है जो स्क्रीन पर एक बॉक्स दिखाई दे सकती है? आंतरिक रूप से क्या हो रहा है जो ऐसा होने का कारण बनता है? क्या इसे अनुकरण करने के लिए वैसे भी है?

वही प्रश्न सभी ग्राफिक्स-आधारित जावा कक्षाओं पर लागू होता है। मुझे यह जानकर उत्सुकता है कि यह कैसे काम करता है, क्योंकि जब भी मैं उनमें से एक का उपयोग करता हूं तो यह मुझे परेशान करता है।

+1

यह संभवतः खतरनाक तरीके से "के बारे में तो बहुत व्यापक एक किताब लिखने सका" के करीब है, लेकिन मैं जवाब जानने के ध्यान दिए बिना –

+0

मैं यह उनके – Sam

+4

प्रदर्शित करने के लिए अंतर्निहित ऑपरेटिंग सिस्टम का उपयोग करता है लगता है मोहित हो जाएगा और तुम हैरान नहीं कर रहे हैं उदाहरण के लिए सभी नेटवर्किंग कक्षाओं के बारे में? यह वही बात है। वीएम मंच पर जो भी देशी एपीआई उपलब्ध है का उपयोग करता है। – Mat

उत्तर

3

जावा AWT (सार विंडोइंग टूलकिट) और बाद में स्विंग शुरू की के साथ शुरू कर दिया।

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

AWT हर जीयूआई घटक, रेडियो बटन या मेनू आइटम की तरह, एक मूल कोड "सहकर्मी" नियंत्रण, मंच प्रदान की घटक है। जावा वर्गों और उनके सी समकक्ष का एक समानांतर सेट है। जावा ग्राफिक्स क्लास विशेष रूप से दिलचस्प है जो लाइनों, आयताकारों और इस तरह के कस्टम ड्राइंग की अनुमति देता है। यह एक सीडीसी (डिवाइस संदर्भ) के साथ विंडोज के तहत peered है - संभवतः।

स्विंग अधिकांश प्लेटफ़ॉर्म घटकों को अनुकरण किया जाता है, यानी स्वयं को फिर से बनाया जाता है: ड्राइंग, माउस हैंडलिंग आदि। तो मूल भाग सरल है, कस्टम ड्राइंग के साथ शायद एक सीडब्ल्यूएनडी (विंडो घटक) कहें।

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

अब एसडब्ल्यूटी एबीएम पुनः लोड के लिए ग्रहण में आईबीएम की एक बाद की पहल थी। स्विंग के रूप में अनुकूलन के रूप में नहीं बल्कि इसके पास मंच बनने का इरादा है।

आपको एडब्ल्यूटी घटकों का उपयोग करना भूल जाना चाहिए, और यदि ग्रहण आरसीपी भी एसडब्ल्यूटी के लिए प्रोग्रामिंग नहीं करना चाहिए।

तो: माउस क्लिक की तरह वैश्विक मंच घटनाओं, अनुरोध फिर से रंगना जावा घटनाओं के लिए अनुवाद कर रहे हैं। जेएफआरएएम, जेपीनल, जेएसक्रॉलपेन्स, जेकंपोनेंट्स का एक कंटेनर पदानुक्रम है। एक घटना से निपटने के घटक है, जो पर उदाहरण के लिए paintComponent कहा जाता है के लिए भेजा जाता है:

@Override 
public void paintComponent(Graphics g) { 
    Graphics2D g2 = (Graphics2D) g; // A later introduced class that can do more. 
    g2.draw... 
} 

साथ JavaFX वहाँ एक नया खिलाड़ी, जो IMHO अभी तक नहीं पूरी तरह से परिपक्व है, लेकिन गैर-उत्पादन कोड में प्रयोग करने योग्य है आता है। यह प्रभाव/एनिमेशन, घूर्णन, परिवर्तन, प्रकाश सक्षम बनाता है। तो प्लेटफॉर्म प्रतिपादन के आधार पर 2 डी -4 डी प्रतिपादन। इसके अलावा यह संपत्ति आधारित है, इसलिए एक चेक बॉक्स जूलियन के लिए जरूरी नहीं होगा, लेकिन एक बुलियन संपत्ति परिवर्तनों को देख और अधिसूचित कर रही है। मुझे इसके साथ एक इष्टतम वास्तुकला को समझने के लिए अभी भी कुछ व्यावहारिक अनुभव की आवश्यकता है।

3

यदि आप जावा के कार्यान्वयन के बारे में उत्सुक हैं तो आपको स्रोत कोड पर एक नज़र रखना चाहिए। http://openjdk.java.net/projects/jdk7/ एक शुरुआत होगी।

बेशक यह आपको केवल उस विशेष कार्यान्वयन में अंतर्दृष्टि देगा और इसका मतलब यह नहीं है कि आपका जावा उसी तरह लागू किया गया है।

+0

मैं यहां जेएफआरएम नहीं करता .... – CodyBugstein

+0

मैंने नहीं देखा है कि आप इसे कहां पा सकते हैं, लेकिन http://openjdk.java.net/groups/स्विंग/स्विंग और एडब्ल्यूटी वहाँ है, और इसके बारे में एक संक्षिप्त विवरण भी है। – Devolus

2

स्क्रीन पर एक बॉक्स कैसा दिखाई देता है? यह कार्यक्षमता ऑपरेटिंग सिस्टम द्वारा JVM (लिनक्स पर एक्स विंडो सिस्टम द्वारा) की पेशकश की जाती है।

जावा स्तर पर, जेएफआरएम java.awt से प्राप्त होता है। विन्डो, जिसमें मूल देशी windowing system द्वारा प्रदान किया गया "देशी सहकर्मी" है।

यदि आप वास्तव में इसे समझना चाहते हैं, तो बेहतर होगा यदि आप केवल सी का उपयोग करके कुछ विंडो बनाने का प्रयास करते हैं।

+0

मुझे उस अंतिम भाग पर और जानकारी कहां मिल सकती है? – CodyBugstein

+0

यह प्रत्येक ऑपरेटिंग सिस्टम पर अलग है। लिनक्स पर "xlib" सबसे बुनियादी पुस्तकालय है (अन्य पुस्तकालय उस के शीर्ष पर बनाए गए हैं)। विंडोज़ पर, "विन 32 एपीआई" (या "विन 64 एपीआई") मूल पुस्तकालय है। – lbalazscs

+0

इसी तरह, ओएस एक्स [क्वार्ट्ज] का उपयोग करता है (https://en.wikipedia.org/wiki/Quartz_%28graphics_layer%29) – trashgod

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