दिलचस्प पोस्ट
सिद्धांत में fetch = "EAGER" और fetch = "LAZY" के बीच अंतर क्या है परिभाषित समयबाह्य के साथ जावा HTTP क्लाइंट अनुरोध जावास्क्रिप्ट ऑब्जेक्ट्स की एक सरणी में आईडी से ऑब्जेक्ट खोजें PHP स्क्रिप्ट के अंदर किसी अन्य पेज पर पोस्ट करें Ubuntu पर ssh-add के साथ स्थायी रूप से निजी कुंजी जोड़ें कोयोनर 2 / टाइपस्क्रिप्ट में एक वैश्विक चर घोषित करने का सबसे अच्छा तरीका क्या है Linq में Row_number over (xxx द्वारा विभाजन)? "इनलाइन" कीवर्ड बनाम "इनलाइनिंग" अवधारणा पाठ फ़ाइलों में स्ट्रिंग की खोज कैसे करें? टेस्ट करें कि क्या किसी ग्लोब का कोई भी मैच बैश में है VBA का उपयोग करते हुए एक्सेल में पिघला / नयी आकृतियाँ? कई झुकाव का समर्थन करने का सबसे आसान तरीका है? जब अनुप्रयोग लैंडस्केप में होता है तो मैं कस्टम एनआईबी कैसे लोड करूँ? ग्रैडल और एंड्रॉइड स्टूडियो के जरिए बिल्डिंग और रनिंग ऐप एक्लिप्स के माध्यम से धीमी है JavaScript को कॉल करने के लिए एक लिंक का उपयोग कैसे करें? फेसबुक के ग्राफ़ एपीआई के साथ एल्बम में फोटो अपलोड करें

JPanel की पृष्ठभूमि के रूप में चित्र होने

मैं जावा में नया हूँ और मैं वर्तमान में ग्राफिक्स के साथ गेम बना रहा हूं मेरे पास यह वर्ग है जो JFrame से फैली हुई है इस वर्ग में, मेरे पास कई JPanel हैं जिन्हें पृष्ठभूमि के रूप में एक छवि की आवश्यकता है जैसा कि मुझे पता है, जेपीएनएल में चित्रों को पेंट करने में सक्षम होने के लिए, मुझे एक अलग वर्ग होना चाहिए जो कि जेपीएनएल से विस्तारित हो और उस वर्ग की पेंट paintComponent विधि काम करेगी। लेकिन मैं प्रत्येक JPanel लिए अलग-अलग वर्ग बनाना नहीं चाहता, मेरे पास उनमें से बहुत से हैं; और इस तथ्य से कि मैं केवल पृष्ठभूमि से चिंतित हूं। मैं यह कैसे कर सकता हूँ? यह एक गुमनाम अंदरूनी वर्ग के साथ है? कैसे?

बेहतर समझने के लिए मुझे कुछ कोड दिया गया है:

 public GUI extends JFrame { private JPanel x; ... public GUI() { x = new JPanel(); // put an image background to x } 

वेब के समाधान से एकत्रित समाधान "JPanel की पृष्ठभूमि के रूप में चित्र होने"

क्यों नहीं एक एकल वर्ग है जो एक Image लेता है ??

 public class ImagePane extends JPanel { private Image image; public ImagePane(Image image) { this.image = image; } @Override public Dimension getPreferredSize() { return image == null ? new Dimension(0, 0) : new Dimension(image.getWidth(this), image.getHeight(this)); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g.create(); g2d.drawImage(image, 0, 0, this); g2d.dispose(); } } 

आप संकेत भी देंगे कि उसे किस चित्र में चित्रित किया जाना चाहिए।

इस तरह, जब आप कभी भी इसकी आवश्यकता होती है, तब आप एक उदाहरण बना सकते थे

अपडेट किया गया

दूसरा सवाल है, क्यों?

आप सिर्फ JLabel उपयोग कर सकते हैं जो आपके लिए किसी भी अतिरिक्त काम के बिना आइकन को पेंट करेगा …

अधिक विवरण के लिए लेबल का उपयोग कैसे करें …

यह वास्तव में एक बुरा विचार है, क्योंकि JLabel इसे पसंदीदा घटकों की गणना करते समय इसे बच्चे के घटकों का उपयोग नहीं करता है, यह केवल छवि के आकार और पाठ गुणों का उपयोग करता है जब इसे पसंदीदा आकार निर्धारित किया जाता है, इसका परिणाम घटक में गलत रूप से हो सकता है

आपको इसके लिए एक और वर्ग बनाने की ज़रूरत नहीं है? आप बस कर सकते हैं:

 x = new JPanel(){ public void paintComponent(Graphics g){ super.paintComponent(g); //draw background image } }; 

आप इसे एक पंक्ति में कर सकते हैं:

panelInstance.add(new JLabel(new ImageIcon(ImageIO.read(new File("Image URL")))));

मुझे आशा है कि यह आपके लिए काम करेगा