java - java加载图像资源

  显示原文与译文双语对照的内容

我的GUI有一个错误。 试图设置标题栏 icon,然后将它的包含在可以运行的jar 中。


BufferedImage image = null;


try {


 image = ImageIO.read(getClass().getClassLoader().getResource("resources/icon.gif"));


} 


catch (IOException e) {


 e.printStackTrace();


}



frame.setIconImage(image);



以下是我获取的错误:


Exception in thread"main" java.lang.IllegalArgumentException: input == null!


 at javax.imageio.ImageIO.read(Unknown Source)


 at GUI.<init>(GUI.java:39)


 at GUI.main(GUI.java:351)



图像位于"资源"文件夹是项目文件的root的正确目录中

时间: 原作者:

首先,更改此行:


image = ImageIO.read(getClass().getClassLoader().getResource("resources/icon.gif"));



对此:


image = ImageIO.read(getClass().getResource("/resources/icon.gif"));



这两种方法之间的差异在于,可以在这个线程上找到2 个不同的信息: 加载资源的不同方法。

NetBeans: 英镑

  • 在 Java GUI应用程序中,对图像进行处理。
  • 如何将图像添加到项目

  • 按英镑右键单击项目的 src 。 选择 -> 软件包
  • 包 Dialog Dialog下,键入包的NAME say 资源 。 单击确定
  • 右键点击资源包。 选择 -> 软件包
  • 新软件包 Dialog Dialog下,键入软件包的NAME say images 。 单击确定
  • 现在选择要添加到项目中的图像,复制它。 在内点击 resources.images,然后选择 Paste Paste Paste
  • 使用最后一个链接检查如何在Java代码中访问这里文件。 在这个例子中,我们将使用

    getClass().getResource("/resources/images/myImage.imageExtension");

  • 按 Shift + F10键,以生成和运行项目。 资源和图像文件夹将在out文件夹中自动创建。

如果手动执行,请按以下步骤操作:

快速参考代码示例( 。要了解更多细节,请提供一些额外的澄清链接):


package swingtest;



import java.awt.*;


import java.awt.image.BufferedImage;


import java.io.IOException;


import javax.imageio.ImageIO;


import javax.swing.*;



/**


 * Created with IntelliJ IDEA.


 * User: Gagandeep Bali


 * Date: 7/1/14


 * Time: 9:44 AM


 * To change this template use File | Settings | File Templates.


 */


public class ImageExample {



 private MyPanel contentPane;



 private void displayGUI() {


 JFrame frame = new JFrame("Image Example");


 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);



 contentPane = new MyPanel();



 frame.setContentPane(contentPane);


 frame.pack();


 frame.setLocationByPlatform(true);


 frame.setVisible(true);


 }



 private class MyPanel extends JPanel {



 private BufferedImage image;



 public MyPanel() {


 try {


 image = ImageIO.read(MyPanel.class.getResource("/resources/images/planetbackground.jpg"));


 } catch (IOException ioe) {


 ioe.printStackTrace();


 }


 }



 @Override


 public Dimension getPreferredSize() {


 return image == null? new Dimension(400, 300): new Dimension(image.getWidth(), image.getHeight());


 }



 @Override


 protected void paintComponent(Graphics g) {


 super.paintComponent(g);


 g.drawImage(image, 0, 0, this);


 }


 }



 public static void main(String[] args) {


 Runnable runnable = new Runnable() {


 @Override


 public void run() {


 new ImageExample().displayGUI();


 }


 };


 EventQueue.invokeLater(runnable);


 }


}



原作者:
...