2011-08-10 14 views
6

में एक छवि पढ़ना मेरे पास मेरी परियोजना में एक छवि फ़ाइल है। पदानुक्रम इस तरह दिखता है:नेटबीन्स

Project hierarchy

मैं इस कोड का उपयोग Manling.java में Manling.png को पढ़ने के लिए कोशिश कर रहा हूँ:

public BufferedImage sprite; 

public Manling() 
{ 
    try 
    { 
    File file = new File("resources/Manling.png"); 
    sprite = ImageIO.read(file); 
    } catch (IOException e) {} 

    System.out.println(sprite.toString()); //This line is to test if it works 
} 

मैं हमेशा println विवरण पर एक NullPointerException मिलता है, तो मुझे लगता है कि रास्ता गलत है। मैंने प्रोजेक्ट में छवि को विभिन्न स्थानों पर ले जाने का प्रयास किया है और मैंने फ़ाइल पथ को बदलने की कोशिश की है (उदा। 'मेरा/संसाधन/मैनलिंग.png' और '/resources/Manling.png')। कोई विचार?

आप एक पूर्ण compilable उदाहरण चाहते हैं, कोशिश यह एक:

package minesscce; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.image.*; 
import java.io.*; 
import javax.imageio.*; 
import java.net.URL; 

public class Mine extends JFrame 
{ 
private BufferedImage sprite; 

public static void main(String args[]) 
{ 
    Mine mine = new Mine(); 
} 

public Mine() 
{ 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 
    setSize(800, 600); 
    setExtendedState(Frame.MAXIMIZED_BOTH); 
    setBackground(Color.WHITE); 

    try 
    { 
     File file = new File("resources/Manling.png"); 
     sprite = ImageIO.read(file); 
    } catch (IOException e) {} 

    System.out.println(sprite.toString()); 
} 

public void paint(Graphics g) 
{ 
    g.translate(getInsets().left, getInsets().top); 
    Graphics2D g2d = (Graphics2D)g; 

    g2d.drawImage(sprite, 0, 0, this); 
    Toolkit.getDefaultToolkit().sync(); 
    g2d.dispose(); 
} 

}

बस किसी भी छवि आप चाहते हैं का उपयोग कर, इस तरह परियोजना की स्थापना:

SSCCE

उत्तर

9

ImageIO.read(Mine.class.getResource("../minesscce.resources/Manling.png")); 
आज़माएं

यहाँ एक उदाहरण है:

  • पदानुक्रम

enter image description here

  • परिणाम

enter image description here

और यहाँ अगर मैं गलत नहीं हूँ कोड ...

public final class ImageResourceDemo { 
    private static BufferedImage bi; 

    public static void main(String[] args){ 
     try { 
      loadImage(); 

      SwingUtilities.invokeLater(new Runnable(){ 
       @Override 
       public void run() { 
        createAndShowGUI();    
       } 
      }); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    private static void loadImage() throws IOException{ 
     bi = ImageIO.read(
       ImageResourceDemo.class.getResource("../resource/avatar6.jpeg")); 
    } 

    private static void createAndShowGUI(){ 
     final JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setBackground(Color.WHITE); 
     frame.add(new JLabel(new ImageIcon(bi))); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

जब छवि 'mine.resources' में थी तब मुझे यह काम मिल गया और पथ '../resources/Manling.png' था। मैं वास्तव में क्यों नहीं समझता, लेकिन मैं शिकायत नहीं कर रहा हूं। धन्यवाद! – Tharwen

0

है, आपके आवेदन की मूल निर्देशिका परियोजना निर्देशिका या स्रोत निर्देशिका है। (सुनिश्चित नहीं है कि कौन सा है)

यदि यह प्रोजेक्ट निर्देशिका है तो resources/Manling.pngMineSSCCE/resources/Manling.png है। कुछ नहीं है!

यदि यह स्रोत निर्देशिका है, resources/Manling.pngMineSSCCE/Source/resources/Manling.png है। वहां कुछ भी नहीं है!

वास्तविक स्थान MineSSCCE/Source/minesscce/resources/Manling.png यही कारण है कि यह काम नहीं कर रहा था।