2012-02-04 7 views
5

क्या स्विंग में एक लेबल पर एक बटन ओवरले करना संभव है?जावा स्विंग में जेएलएबल पर जेबटन ओवरले करें?

उदाहरण के लिए, यदि छवि के साथ जेएलएबल है और कोई टेक्स्ट नहीं है, और मैं इस जेएलएबल पर अपना बटन ओवरले करना चाहता हूं। लेबल की तरह कुछ परिभाषित किया गया है:

myLabel = new javax.swing.JLabel(new ImageIcon(myPicture)); 

यदि नहीं, तो किसी भी विचार कैसे मैं यह एहसास कर सकते हैं, धन्यवाद।

संपादित करें: असल में मैं एक JLabel को JPanel जोड़ने के बारे में पढ़ा है, जब मैं बटन लेआउट के साथ एक पैनल जोड़ने के लिए, यह ठीक संकलित लेकिन कुछ भी छवि के साथ, दिख रहा है सिर्फ JLabel

अद्यतन: सुझाव दिया @ paranoid-android द्वारा, किसी भी तरह से मैंने अपनी समस्या हल कर दी है। हालांकि मुझे अभी भी पता होना है कि मैं जेएलएबल के शीर्ष पर ओवरले किए गए घटकों की स्थिति को कैसे अनुकूलित कर सकता हूं क्योंकि मेरे पास अधिक नियंत्रण नहीं है (संभवतः क्योंकि आमतौर पर मैं लेआउट ड्राइंग के लिए नेटबीन का उपयोग करता हूं, और इसके लिए हार्ड कोडिंग की आवश्यकता होती है)।

कुछ इस तरह काम किया:

ImagePanel(Image image, int id) { 
    this.image = image; 
    this.tile = false; 

    JButton backButton = new JButton(); 
    JButton nextButton = new JButton(); 
    backButton.setText(" BACK "); 
    nextButton.setText(" NEXT "); 


    add(backButton); 
    add(nextButton); 

}; 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.drawImage(image, 0, 0, getWidth(), getHeight(), this); 
} 
+0

क्या आप कोई सीमा वाले जेबटन बनाने की कोशिश कर रहे हैं? या एक क्लिक करने योग्य जेएलएबल? – Raceimaztion

+0

@Raceimaztion, मेरे पास जेएलएबल एक अपरिवर्तित फ़्रेम में छवि सेट के साथ है, ताकि स्क्रीन पर आप केवल किसी भी सीमा या कुछ के बिना छवि को देख सकें। अब मैं इस छवि के शीर्ष पर उन्हें ओवरले करके अन्य विकल्प जोड़ना चाहता हूं, क्या मुझे किसी पैनल में छवि के साथ प्रयास करने की आवश्यकता हो सकती है, लेकिन मैं जानना चाहता था कि मैंने यह कुछ जानकार है जो मैंने पूछा है? – Johnydep

+0

रिपोर्ट करें कि क्या काम करता है और क्या नहीं, कृपया। :) – rtheunissen

उत्तर

9

आप एक JLayeredPane का उपयोग कर, हालांकि अगर मैं सही ढंग से समझ, पूर्ण सबसे अच्छा तरीका है कि ओवरराइड करने के लिए paintComponent होगा करने के लिए यह कर सकते हैं:

// as part of your JPanel 
@Override 
public void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    g.drawImage(background, 0, 0, this); 
} 

तो फिर तुम घटकों को जोड़ सकते हैं JLabel की आवश्यकता के बिना पैनल को आप पसंद करते हैं।

2

आप बटन और लेबल ओवरलैप कर सकते हैं, लेकिन आप निश्चित लेआउट के साथ यह करने के लिए होगा। यदि आप ग्रिडबैगआउट के साथ बंद हो जाते हैं, तो मुझे खींचने में सक्षम हो सकता है, लेकिन मुझे शक है।

यहां आपको और क्या चाहिए इसकी आवश्यकता है।

http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

+0

असल में मैंने कोशिश की लेकिन ग्रिडबैगआउट वास्तव में अतिव्यापी अनुमति नहीं देता है। – Johnydep

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