2012-11-03 9 views
29

मैं जावा गुई सीख रहा हूं। जिस तरह से मैंने खिड़की बनाने के लिए सीखा है वह JFrame वर्ग को उत्तराधिकारी या विस्तारित करना है और इसका उपयोग करना अच्छा है, क्योंकि JFrame में विंडो के सभी गुण शामिल हैं। अब अगर मैं इस विंडो में कुछ जोड़ना चाहता हूं, तो मुझे add() विधि का उपयोग करने की आवश्यकता है। लेकिन आज मैं JPanel पर आया जो एक खिड़कियां भी बनाता है और हम jpanelObjec.add() द्वारा सामान जोड़ सकते हैं।जावा में जेपीनल बनाम जेएफआरएम

दो तरीकों के बीच क्या अंतर है? क्या वे किसी तरह से संबंधित हैं?

+0

इसी प्रकार का प्रश्न: http://stackoverflow.com/questions/3497889/difference-between-jpanel-jframe-jcomponent-and-japplet –

उत्तर

56

आप अनावश्यक रूप से JFrame वर्ग का विस्तार नहीं होना चाहिए (केवल यदि आप JFrame वर्ग के लिए अतिरिक्त कार्यक्षमता जोड़ रहे हैं)

JFrame:

आप एक स्विंग ट्यूटोरियल की जरूरत

JFrameComponent और Container बढ़ाता है।

यह एक शीर्ष स्तर का कंटेनर है जो विंडो के लिए न्यूनतम आवश्यकताओं का प्रतिनिधित्व करने के लिए उपयोग किया जाता है। (?/अनुमति को अधिकतम संख्या भी कम हो) यह Border रों, resizability, शीर्षक पट्टी, नियंत्रण (? JFrame resizeable है), और ईवेंट हैंडलर्स विभिन्न Event रों लिए windowClose की तरह, windowOpened आदि

JPanel में शामिल हैं:

JPanelComponent, Container और JComponent

यह एक सामान्य समूह के लिए इस्तेमाल किया वर्ग अन्य Component एक साथ है है फैली हुई है।

  • LayoutManager एस के साथ काम करते समय यह उपयोगी है। GridLayout f.i विभिन्न JPanel एस में घटकों को जोड़कर जो gui बनाने के लिए JFrame में जोड़ा जाएगा। यह Layout और पुनः उपयोगिता के मामले में अधिक प्रबंधनीय होगा।

  • स्विंग में पेंटिंग/ड्राइंग के लिए यह भी उपयोगी है, आप paintComponent(..) ओवरराइड करेंगे और निश्चित रूप से डबल बफरिंग की पूरी खुशी होगी।

एक स्विंग जीयूआई, जैसे (JWindow, Window, JFrameFrame या Applet) एक शीर्ष स्तर कंटेनर बिना नहीं हो सकता है, जबकि इसके बिना JPanel रों मौजूद हो सकता है।

+3

वास्तव में, [जेएफआरएएम] (http://docs.oracle.com/javase/ 7/डॉक्स/एपीआई/जावैक्स/स्विंग/जेएफआरएएम.html) 'जेकंपोनेंट' और 'जेकॉन्टैनर' का विस्तार नहीं करता है। – tenorsax

0

मुझे लगता है कि हम केवल एक वर्ग का विस्तार करना चाहिए कर सकते हैं अगर हम सुपर क्लास के अधिक विशिष्ट वर्ग बनाने जा रहे हैं।आप JFrame frame= new Frame(); तरह फ़्रेम का एक उदाहरण बना सकते हैं और आप frame.getContentPane.add(widget) तो जैसे वस्तुओं में जोड़ सकते हैं, अब फ्रेम और JPanel

JFrame के बीच अंतर पर एक नज़र ले सकते हैं सामान एक प्रतिनिधित्व करने के लिए प्रयोग किया जाता है कुछ सामान्य बातों के साथ एक खिड़कियों -Its खिड़की होना चाहिए। इसमें सीमाएं (आकार बदलने योग्य वाई/एन?), टाइटलबार (ऐप का नाम या अन्य संदेश), नियंत्रण (न्यूनतम/न्यूनतम अनुमति है?), और 'विंडो क्लोज़' जैसी विभिन्न सिस्टम इवेंट्स के लिए इवेंट हैंडलर (अभी तक बाहर निकलने के लिए अनुमति दें?) शामिल हैं। जेएफआरएम एक खिड़की है जो आमतौर पर स्टैंड-अलोन अनुप्रयोगों के लिए उपयोग की जाती है, जैसे एक चेतावनी विंडो, या अधिसूचना विंडो, जिसे आप आमतौर पर अपनी स्क्रीन पर पॉप आउट करते हैं। यह विंडोज श्रोता की एक विधि का उपयोग करता है जो किसी भी विंडो को बंद, खोलने, अधिकतम करने, कम करने या सक्रिय करने पर निष्पादित करता है।

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

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