猿问

加载图片资源

加载图片资源

我的GUI出错了。尝试设置标题栏图标,然后将其包含在Runnable 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)

图像位于正确的目录中,“resources”文件夹是项目文件的根目录


繁花不似锦
浏览 949回答 3
3回答

翻阅古今

图像文件必须位于resources/JAR&nbsp;的目录中,如如何使用图标和此示例中所示的目录所示images/。

斯蒂芬大帝

有一种更简单的方法来加载和设置图像作为框架图标:frame.setIconImage( &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;ImageIcon(getClass().getResource("/resources/icon.gif")).getImage());就这样 :)!您甚至不必使用try-catch块,因为ImageIcon不会抛出任何声明的异常。因此getClass().getResource(),它可以根据您运行应用程序的方式从文件系统和jar中运行。如果您需要检查图像是否可用,可以检查返回的URL&nbsp;getResource()是否为null:URL&nbsp;url&nbsp;=&nbsp;getClass().getResource("/resources/icon.gif");if&nbsp;(url&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;"Could&nbsp;not&nbsp;find&nbsp;image!"&nbsp;);else &nbsp;&nbsp;&nbsp;&nbsp;frame.setIconImage(new&nbsp;ImageIcon(url).getImage());
随时随地看视频慕课网APP
我要回答