2012-01-08 16 views
6

जब मैं जावा जीयूआई बनाने सीखा:क्या मुझे जेएफआरएएम या इसकी सामग्री में घटक जोड़ना चाहिए?

class Example extends JFrame { 
    Example() { 
     JPanel panel = new JPanel(); 
     this.add(panel); 

     // Create components here and add them to panel 
     // Perhaps also change the layoutmanager of panel 

     this.pack(); 
     this.setVisibility(true); 
    } 

    public static void main(String[] args) { 
     new Example(); 
    } 
} 
: मेरा पहला जावा पाठ्यक्रम में है, मैं JFrame उदाहरणों के रूप में मेरे विंडो बनाने, और फिर जोड़ने के एक प्रत्येक JFrame को JPanel और अंत में JPanel करने के लिए सभी GUI घटक जोड़ने के लिए सिखाया गया था

मैं हमेशा "अच्छा, यह थोड़ा गंध करता है; मुझे एक कंटेनर होने के लिए एक अतिरिक्त वस्तु बनाना पसंद नहीं है," लेकिन मुझे ऐसा करने का कोई और तरीका नहीं पता था इसलिए मैं बस इसके साथ चला गया। हाल ही में, जब मैं इस "पैटर्न" से अधिक ठोकर खाई तक:

class AnotherExample extends JFrame { 
    AnotherExample() { 
     Container pane = this.getContentPane(); 

     // Add components to and change layout of pane instead 

     this.pack(); 
     this.setVisibility(true); 
    } 

    public static void main(String[] args) { 
     new AnotherExample(); 
    } 
} 

फिर भी काफी जावा के लिए नया किया जा रहा है, मैं दूसरा दृष्टिकोण के बारे में बेहतर बस, क्योंकि यह एक JPanel बनाने सिर्फ अन्य घटकों रैप करने के लिए शामिल नहीं करता है लगता है। लेकिन इसके अलावा दृष्टिकोण के बीच वास्तविक मतभेद क्या हैं? क्या उनमें से किसी के पास दूसरे पर कोई बड़ा लाभ है?

+1

अधिक जानकारी के लिए इस ट्यूटोरियल को पढ़ें: http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html –

+0

ग्रेट ट्यूटोरियल! मैं किसी को भी यह सलाह देता हूं कि इसे पढ़ने के लिए यह प्रश्न मिल जाए। –

+0

कोई फर्क नहीं पड़ता (दोनों खराब हैं, या तो करने की कोई ज़रूरत नहीं है, बस फ्रेम में जोड़ें) - वास्तविक गंध _Frame_ को आगे बढ़ाती है: अच्छा ओएल 'ओओ नियम केवल तभी विस्तार करना है जब कोई आवाज हो - एक रिश्ता (बनाम। केवल उपयोग, जैसा कि सभी गुई अनुप्रयोगों में 99.99% में मामला है) – kleopatra

उत्तर

4

मैं JPanel (जो एक स्विंग कंटेनर होने पर, सीमा हो सकता है) बनाना और इसे सामग्री फलक के रूप में सेट करना पसंद करते हैं।

सामग्री फलक से JComponent प्राप्त करने के लिए कास्टिंग की आवश्यकता होती है, जिसमें अतिरिक्त घटक बनाने से भी बदतर गंध होती है।

+0

... और आप ऐसा क्यों करते हैं? मेरे द्वारा पोस्ट किए गए दो की तुलना में उस दृष्टिकोण को बेहतर (या अलग) क्या बनाता है? –

+0

और वैसे: अच्छा विचार! यह संभवतः दृष्टिकोण (वास्तविक तथ्यों से अनजान) जैसा अब तक सबसे अच्छा है =) –

+0

मुझे लगता है कि मेरी प्रतिक्रिया संपादित करने से पहले पहली टिप्पणी की गई थी। इसे सबमिट करने के बाद मैंने यह जवाब देखने के लिए प्रश्न को दोबारा पढ़ा .. मेरा उत्तर नहीं दिया। ;) –

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