Java 我无法显示我的图像图标

Java 我无法显示我的图像图标,java,image,swing,embedded-resource,imageicon,Java,Image,Swing,Embedded Resource,Imageicon,这是我的密码 import javax.swing.*; public class Option extends JFrame{ ImageIcon img = new ImageIcon("image.png"); ImageIcon img2 = new ImageIcon("image2.png"); JButton testBut = new JButton(img); JButton testBut2 = new JButton(img2); JPanel pnl = new JP

这是我的密码

import javax.swing.*;
public class Option extends JFrame{ 

ImageIcon img = new ImageIcon("image.png");
ImageIcon img2 = new ImageIcon("image2.png");
JButton testBut = new JButton(img);
JButton testBut2 = new JButton(img2);
JPanel pnl = new JPanel();

public Option(){
    super("Swing Window");
    setSize( 500,200 );
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pnl.add(testBut);
    pnl.add(testBut2);
    add(pnl);
    setVisible(true);
}

public static void main(String[] args){
    Option gui = new Option();
}
}
我已经在同一个目录中的类文件和按钮显示为空白的两个图像。我对Java非常陌生,所以我想不出这是错误的原因

编辑


这些图像与选项类位于同一目录中


“图像与选项类位于同一目录中”

ImageIcon(String)
试图在工作目录的上下文中(从程序执行的地方)查找命名的图像,但它将失败,因为图像实际上不存在

图像包含在应用程序上下文中(当应用程序被jared时,图像将被嵌入Jar中)

相反,你应该尝试使用

img = new ImageIcon(getClass().getResource("image.png"));
从类的构造函数中。这将尝试在应用程序的类路径上下文中查找与调用
getResource
的类的包相关的图像

我还鼓励使用
ImageIO.read
of
ImageIcon
有两个原因,一是调用方法时保证加载图像(而不是在某个后台线程中加载),二是如果由于某种原因无法加载图像,它将抛出
IOException
,哪个更有帮助

请查看以了解更多详细信息


“图像与选项类位于同一目录中”

ImageIcon(String)
试图在工作目录的上下文中(从程序执行的地方)查找命名的图像,但它将失败,因为图像实际上不存在

图像包含在应用程序上下文中(当应用程序被jared时,图像将被嵌入Jar中)

相反,你应该尝试使用

img = new ImageIcon(getClass().getResource("image.png"));
从类的构造函数中。这将尝试在应用程序的类路径上下文中查找与调用
getResource
的类的包相关的图像

我还鼓励使用
ImageIO.read
of
ImageIcon
有两个原因,一是调用方法时保证加载图像(而不是在某个后台线程中加载),二是如果由于某种原因无法加载图像,它将抛出
IOException
,哪个更有帮助

请查看以了解更多详细信息


“图像与选项类位于同一目录中”

ImageIcon(String)
试图在工作目录的上下文中(从程序执行的地方)查找命名的图像,但它将失败,因为图像实际上不存在

图像包含在应用程序上下文中(当应用程序被jared时,图像将被嵌入Jar中)

相反,你应该尝试使用

img = new ImageIcon(getClass().getResource("image.png"));
从类的构造函数中。这将尝试在应用程序的类路径上下文中查找与调用
getResource
的类的包相关的图像

我还鼓励使用
ImageIO.read
of
ImageIcon
有两个原因,一是调用方法时保证加载图像(而不是在某个后台线程中加载),二是如果由于某种原因无法加载图像,它将抛出
IOException
,哪个更有帮助

请查看以了解更多详细信息


“图像与选项类位于同一目录中”

ImageIcon(String)
试图在工作目录的上下文中(从程序执行的地方)查找命名的图像,但它将失败,因为图像实际上不存在

图像包含在应用程序上下文中(当应用程序被jared时,图像将被嵌入Jar中)

相反,你应该尝试使用

img = new ImageIcon(getClass().getResource("image.png"));
从类的构造函数中。这将尝试在应用程序的类路径上下文中查找与调用
getResource
的类的包相关的图像

我还鼓励使用
ImageIO.read
of
ImageIcon
有两个原因,一是调用方法时保证加载图像(而不是在某个后台线程中加载),二是如果由于某种原因无法加载图像,它将抛出
IOException
,哪个更有帮助


查看更多详细信息

您也可以添加类似的代码:
setIconImage(新图像图标(新文件(“icona.png”).toString()).getImage())

您也可以添加类似的代码:
setIconImage(新图像图标(新文件(“icona.png”).toString()).getImage())

您也可以添加类似的代码:
setIconImage(新图像图标(新文件(“icona.png”).toString()).getImage())

您也可以添加类似的代码:
setIconImage(新图像图标(新文件(“icona.png”).toString()).getImage())

相对于
选项
类,图像存储在哪里?您可能想看看这些映像是否在同一个目录中,因为选项classApplication resources将在部署时成为嵌入式资源,因此现在就开始像访问它们一样访问它们是明智的。必须通过URL而不是文件访问。有关如何形成URL的信息,请参阅。谢谢您的帮助,但我已成功修复了它。我使用了一个像你说的URL,起初不起作用,但我所要做的只是刷新项目,让png文件显示出来。谢谢大家!相对于
选项
类,图像存储在哪里?您可能想看一看,这些图像与classapplicationresources选项b位于同一目录中