2010-10-29 19 views
7

जेपीएएनईएल पर छवि पृष्ठभूमि कैसे डालें?छवि पृष्ठभूमि के साथ जेपीनेल

JPanel pDraw = new JPanel(new GridLayout(ROWS,COLS,2,2)); 
pDraw.setPreferredSize(new Dimension(600,600)); //size of the JPanel 
pDraw.setBackground(Color.RED); //How can I change the background from red color to image? 
+0

मैं का प्रयोग करेंगे एक [JImagePanel] (https://github.com/dberm22/DBoard/blob/master/src/com/dberm22/utils/ JImagePanel.java)। आपको जो कुछ भी चाहिए उसे करना चाहिए, – dberm22

उत्तर

2

Here's एक स्पष्टीकरण। निम्नलिखित की तरह
सीधे JPanel करने के लिए छवि 'आकर्षित' करने के लिए, JPanel के paintComponent(Graphics) विधि ओवरराइड कुछ करने के लिए:

+0

आपकी मदद के लिए धन्यवाद :) – Jessy

4

यह शायद एक ImageIcon में Image लोड और एक JLabel में प्रदर्शित है, तथापि के लिए सबसे आसान है

public void paintComponent(Graphics page) 
{ 
    super.paintComponent(page); 
    page.drawImage(img, 0, 0, null); 
} 

जहां imgImage है (संभवतः ImageIO.read() कॉल के माध्यम से लोड किया गया है)।

Graphics#drawImage एक भारी अधिभारित कमांड है जो आपको इस बात को अत्यधिक विशिष्ट बनाने की अनुमति देगा कि आप छवि को कितना, कितना और कहां चित्रित करते हैं।

आप Image#getScaledInstance विधि का उपयोग करके अपनी पसंद के लिए छवि को 'फैंसी' भी प्राप्त कर सकते हैं। width या height पैरामीटर के लिए यह छवि के पहलू अनुपात को रखने के लिए -1 ले जाएगा।

एक और अधिक फैंसी तरीके से लाना:

public void paintComponent(Graphics page) 
{ 
    super.paintComponent(page); 

    int h = img.getHeight(null); 
    int w = img.getWidth(null); 

    // Scale Horizontally: 
    if (w > this.getWidth()) 
    { 
     img = img.getScaledInstance(getWidth(), -1, Image.SCALE_DEFAULT); 
     h = img.getHeight(null); 
    } 

    // Scale Vertically: 
    if (h > this.getHeight()) 
    { 
     img = img.getScaledInstance(-1, getHeight(), Image.SCALE_DEFAULT); 
    } 

    // Center Images 
    int x = (getWidth() - img.getWidth(null))/2; 
    int y = (getHeight() - img.getHeight(null))/2; 

    // Draw it 
    page.drawImage(img, x, y, null); 
} 
+0

धन्यवाद रीज़ – Jessy

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