2013-03-29 6 views
6

पर पृष्ठभूमि छवि जोड़ना मैं जावा में एक बोर्ड गेम बनाने पर काम कर रहा हूं। गेम बोर्ड के लिए मैं पूरे जेपीनल की पृष्ठभूमि के रूप में बोर्ड की छवि को रखने की कोशिश कर रहा था, जो जेएफआरएएम भरता है। मुझे ऐसा करने का एक तरीका मिला, लेकिन केवल स्थानीय रूप से संग्रहीत फ़ाइल के साथ, इसे जीयूआई के अंदर भी पैकेज से छवि लेने में सक्षम होना चाहिए।एक जेपीनेल

package Gui; 

import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import javax.swing.JPanel; 

//Proof of concept for setting an image as background of JPanel 

public class JBackgroundPanel extends JPanel { 
    private BufferedImage img; 

    public JBackgroundPanel() { 
     // load the background image 
     try { 
      img = ImageIO.read(new File(
        "C:\\Users\\Matthew\\Desktop\\5x5  Grid.jpg")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     // paint the background image and scale it to fill the entire space 
     g.drawImage(img, 0, 0, getWidth(), getHeight(), this); 
    } 
} 

मैं पढ़ा है कि ImageIcon का उपयोग कर एक अच्छा ठीक है, लेकिन मैं कैसे ठीक इसका इस्तेमाल करने की जानकारी नहीं है।

संपादित करें 1 - मुझे अपना जवाब यहां मिला http://www.coderanch.com/how-to/java/BackgroundImageOnJPanel मेरे पास मेरे कार्यक्षेत्र में चित्र स्वरूपित भी गलत था। मदद

+3

आप इस साइट को खोजना चाहते हैं क्योंकि यह बहुत कुछ पूछा गया है। यदि आप एक जार फ़ाइल से किसी छवि तक पहुंचने के लिए देख रहे हैं, तो आप इसे संसाधन के रूप में करना चाहते हैं, यानी 'ImageIO.read (getClass()। getResourceAsStream (resourcePath));' संसाधन पथ सापेक्ष होगा आपकी कक्षा फाइलों के लिए। –

+0

नोट: छवि आइकन * नहीं * एक "अच्छा फिक्स" है। –

उत्तर

6
  1. यकीन है कि संसाधन आप संसाधन, जो ImageIO द्वारा इस्तेमाल किया जा सकता संसाधन को पढ़ने के लिए करने के लिए एक URL संदर्भ प्राप्त करने के लिए लोड करने के लिए जार फ़ाइल
  2. उपयोग getClass().getResource("/path/to/resource") के भीतर स्थित है के लिए प्रेरित करें के लिए धन्यवाद

तो, उदाहरण के लिए, अपने जार के अंदर फ़ोल्डर यदि छवि/छवियों में स्थित था, तो आप इस्तेमाल कर सकते हैं

ImageIO.read(getClass().getResource("/images/5x5 Grid.jpg")); 

उदाहरण के लिए ...

+2

हाँ, बिल्कुल, 1+। फ़ाइल नाम में रिक्त स्थान के बारे में कुछ मुझे हालांकि खुजली देता है। –

+2

@ होवरक्राफ्टफुलऑफेल हाँ, रिक्त स्थान मुझे स्कीटिश बनाते हैं – MadProgrammer

+0

रिक्त स्थान एक खराब प्रतिलिपि थी, फ़ाइल का नाम 5x5 Grid.gif, 1 एकल स्थान है। –

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