返回Null指针的png上的Java getClass()。getResource

时间:2013-05-26 20:20:58

标签: java swing imageicon

我不确定我是否使用此代码引用了正确的位置,我尝试访问的图片标题为Flower0.png等。

它们与我项目的其余代码位于同一目录中。 此类位于名为hangman.ui的src文件夹中,.png文件位于名为Resources的目录文件夹中。

也许getClass().getResource不对?

这是我第一次尝试将图像放入GUI中。

非常感谢帮助!

public WiltingFlowerRendererRemix(HangmanLogic logic) 
{
    panel = new JPanel();
    panel.setLayout(new BorderLayout());
    imageLabel = new JLabel();
    panel.add(imageLabel, BorderLayout.CENTER);

    int numberOfImages = 10;

    images = new ImageIcon[numberOfImages];
    for (int i = 0; i < numberOfImages; i++)
    {
        images[i] = new ImageIcon(getClass().getResource("Flower"+Integer.toString(i) + ".png"));

    }
}

2 个答案:

答案 0 :(得分:1)

您说图像位于名为“资源”的文件夹中?你可以加载这样的图像:

BufferedImage image = ImageIO.read(getClass().getResource("/Resources/Flower0.png"));
ImageIcon icon = new ImageIcon(image);

要在GUI上使用它,您可以使用JLabel。

JLabel label = new JLabel();
label.setIcon(icon);

然后将标签添加到面板中。例如。

答案 1 :(得分:0)

对我来说有用...

根据Maven: https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

src/main/resourcesApplication/Library resources

然后我将ICON放在此位置:

PROJECTNAME\src\main\resources\usedPictures\
--Open.png

清理并生成。,然后您可以在此处检查文件的获取位置...。

PROJECTNAME\target\classes\usedPictures\
--Open.png

现在使用ICON示例:

button.setIcon(
    new javax.swing.ImageIcon(
        getClass().getClassLoader().getResource("usedPictures/Open.png")
    )
);