2009-10-03 20 views
5

के शीर्ष पर किसी अन्य जेएलएबल के शीर्ष पर जेएलएबल जोड़ना संभव है? धन्यवाद।JLabel किसी अन्य JLabel

+1

खेद ... क्यों कि होश होगा की विशेषताओं का उपयोग करके डाल जोड़ सकते हैं ?? – Juri

+2

यही कारण है कि मैं पूछ रहा हूं .. – annaoj

उत्तर

7

संक्षिप्त उत्तर हाँ, के रूप में एक JLabel एक Container है, तो यह स्वीकार कर सकते हैं एक Componentadd विधि का उपयोग कर JLabel में जोड़ने के लिए (एक JLabelComponent का एक उपवर्ग है):

JLabel outsideLabel = new JLabel("Hello"); 
JLabel insideLabel = new JLabel("World"); 
outsideLabel.add(insideLabel); 

उपरोक्त कोड में, insideLabeloutsideLabel में जोड़ा गया है।

हालांकि, दृष्टि से, "हैलो" टेक्स्ट वाला एक लेबल दिखाता है, इसलिए कोई वास्तव में लेबल के भीतर मौजूद लेबल को नहीं देख सकता है।

तो सवाल यह है कि कोई अन्य लेबल के शीर्ष पर एक लेबल जोड़कर वास्तव में क्या हासिल करना चाहता है।


संपादित करें:

टिप्पणियों से:

अच्छी तरह से, मैं क्या पहली बार था करना चाहता था, एक फ़ाइल से एक निश्चित अंश पढ़ते हैं, तो में है कि अंश प्रदर्शित jlabel। मैंने क्या सोचा था अंश को 3 भागों में विभाजित करें, फिर तीनों में से प्रत्येक के लिए एक लेबल का उपयोग करें। फिर दूसरा, मैं अंश खींचने में सक्षम होना चाहता हूं, इसलिए मैंने सोचा कि मैं एक और jlabel का उपयोग कर सकता हूं, और बड़े jlabel पर 3'mini jlabels 'रख सकता हूं। मैं नहीं जानता कि यह काम करेगा हालांकि ..: |

ऐसा लगता है कि एक कैसे जावा में लेआउट प्रबंधकों का उपयोग करने पर विचार करना चाहिए।

Using Layout Managers और A Visual Guide to Layout Managers, The Java Tutorials दोनों से शुरू करने के लिए एक अच्छी जगह होगी।

ऐसा लगता है कि GridLayout कार्य को पूरा करने का एक विकल्प हो सकता है।

JPanel p = new JPanel(new GridLayout(0, 1)); 
p.add(new JLabel("One")); 
p.add(new JLabel("Two")); 
p.add(new JLabel("Three")); 

उपरोक्त उदाहरण में, JPanel लेआउट प्रबंधक के रूप में एक GridLayout उपयोग करने के लिए बना है, और JLabel रों की एक पंक्ति बनाने के लिए कहा है।

+0

ओह। अच्छा है धन्यवाद! मैं इनसे वास्तव में परिचित नहीं हूं इसलिए मैंने यहां पूछा। :) – annaoj

+0

अच्छी तरह से, मैं जो करना चाहता था वह पहले था, फ़ाइल से एक निश्चित अंश पढ़ें, फिर उस अंश को jlabel में प्रदर्शित करें। मैंने जो कुछ सोचा था वह अंश को 3 भागों में विभाजित करना था, फिर तीनों में से प्रत्येक के लिए एक लेबल का उपयोग करें। फिर दूसरा, मैं अंश खींचने में सक्षम होना चाहता हूं, इसलिए मैंने सोचा कि मैं एक और jlabel का उपयोग कर सकता हूं, और बड़े jlabel पर 3'mini jlabels 'रख सकता हूं। मुझे नहीं पता कि यह काम करेगा हालांकि ..: | – annaoj

+0

लगता है जैसे यह काम करने जा रहा है .. धन्यवाद, coobird! :) – annaoj

0

यह लेआउट का मामला है। आप शून्य लेआउट (हार्ड कोड किए गए स्थानों के साथ) या कस्टम लेआउट के साथ ऐसा कर सकते हैं।

+0

मैं ऐसा करने की कोशिश कर रहा हूं, लेकिन यह मेरे लिए काम नहीं करता है। : सी शायद मैं कुछ गलत कर रहा हूँ। मैं फिर से कोशिश करता हूँ। धन्यवाद ओमरी! – annaoj

+0

आप वर्तमान कंटेनर पदानुक्रम का अच्छा डंप प्राप्त करने के लिए सूची() फ़ंक्शन का उपयोग कर सकते हैं, आपको अपनी समस्या को डीबग करने में मदद करनी चाहिए। –

+0

बढ़िया! धन्यवाद! क्या मुझे फिर से समस्याएं आनी चाहिए, क्या मैं इसे यहां फिर से पोस्ट कर सकता हूं? – annaoj

1

आपके मूल प्रश्न का उत्तर हाँ कारणों से है कि किसी भी घटक को कंटेनर में जोड़ा जा सकता है।

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

यदि आप फ्रेम इत्यादि का आकार बदलते हैं तो आप लेआउट मैनेजर का उपयोग नहीं कर सकते हैं क्योंकि जैसे ही आप फ्रेम इत्यादि का आकार बदलते हैं, लेआउट मैनेजर लागू किया जाएगा और घटकों को घटक के लेआउट मैनेजर के आधार पर पुनर्स्थापित किया जाएगा।

+0

ओह। लेकिन क्या किसी दूसरे के ऊपर एक लेबल होना संभव है, और दोनों लेबलों को एक के रूप में खींचने में सक्षम हो? : | – annaoj

+0

यदि माउस श्रोता को मूल लेबल में जोड़ा जाता है, तो सभी बच्चों को स्थानांतरित होने पर भी खींचा जाएगा। – camickr

+0

ओह..लेकिन एक दोस्त ने कहा कि यह संभव नहीं है .. कहा कि मुझे एक पैनल का उपयोग करना चाहिए। वाह। अब मैं खो गया हूँ। : | – annaoj

0

आप JLayeredPane का उपयोग कर सकते हैं और इसकी सीमा को सीमा पर सेट कर सकते हैं।

+0

मुझे खेद है, अगर आप एक डिजाइनर का उपयोग करते हैं तो यह एक आसान तरीका है! Netbeans में से एक की तरह। –

0

आप उन्हें एक दूसरे के ऊपर क्षैतिज या लम्बवत अंतराल (hgap, vgap) लेआउट
JPanel p = new JPanel(new GridLayout(2, 1,-40,0)); //the 40 is the hgap , make it the same with the label height .

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