Java Swing:无法使用getResource加载图像

时间:2014-03-29 16:49:35

标签: java swing jlabel embedded-resource getresource

尝试将图像添加到类目录时,我试图找出问题所在。 (这样做当我导出为可运行的JAR时,图像包含在包中)。

所以我得到了位于C:\ Users \ sean \ workspace \ myApps \ src \ testing'中的strawberry.jpg文件。 你能告诉我我失踪的是什么吗? 谢谢!

package testing;

import java.awt.*;
import javax.swing.*;

public class IconTest {

    public static void main(String[] arguments) {

        JFrame frame1 = new JFrame();
        frame1.setTitle("Frame1");
        frame1.setSize(500, 500);
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FlowLayout flo = new FlowLayout();
        frame1.setLayout(flo);

        JLabel label1 = new JLabel(new ImageIcon(
            IconTest.class.getResource("strawberry.jpg")));
        frame1.add(label1);
        frame1.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:1)

我会使用SomeClass.class.getResourceAsStream("..."),如下例所示:

public static void main(String[] arguments) throws IOException {

    JFrame frame1 = new JFrame();
    frame1.setTitle("Frame1");
    frame1.setSize(500, 500);
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    FlowLayout flo = new FlowLayout();
    frame1.setLayout(flo);

    InputStream resourceAsStream = IconTest.class.getResourceAsStream("strawberry.jpg");
    Image image = ImageIO.read(resourceAsStream);

    JLabel label1 = new JLabel(new ImageIcon(image));
    frame1.add(label1);
    frame1.setVisible(true);
}

答案 1 :(得分:1)

将图像文件放在编译类所在的目录中,并通过在文件名前添加“/”来更改yor代码中的路径:

JLabel label1 = new JLabel(new ImageIcon(
        IconTest.class.getResource("/strawberry.jpg")));

在类路径中搜索资源。