Reading an image in Netbeans

北慕城南 提交于 2019-11-26 21:05:08

问题


I have an image file in my project. The hierarchy looks like this:

I'm trying to read Manling.png into Manling.java using this code:

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 } 

I always get a NullPointerException on the println statement, so I assume the path is wrong. I've tried moving the image to different places in the project and I've tried changing the file path (e.g. 'mine/resources/Manling.png' and '/resources/Manling.png'). Any ideas?

If you want a full compilable example, try this one:

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(); } 

}

Just set up the project like this, using any image you want:


回答1:


Try

ImageIO.read(Mine.class.getResource("../minesscce.resources/Manling.png")); 

Here's an example:

  • Hierarchy

  • Result

And here's the code...

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);     } } 



回答2:


If I am not wrong, root directory of your application is the project directory or the source directory. (Not sure exactly which one is)

If it is project directory then resources/Manling.png is MineSSCCE/resources/Manling.png. Nothing is there!

If it is the source directory, resources/Manling.png is MineSSCCE/Source/resources/Manling.png. Nothing is there either!

The actual location is MineSSCCE/Source/minesscce/resources/Manling.png That is why it was not working.



来源:https://stackoverflow.com/questions/7014123/reading-an-image-in-netbeans

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!