从源文件夹导入时,不会显示Java映像

时间:2014-01-28 00:01:49

标签: java image classloader

我是编码的初学者,我正在试验GUI对象。使用BlueJ时,我在使用图像时遇到了麻烦,当我注意到当我将它们打包成.jar时它们不会显示

我读到的解决方案之一是将图像放在“src”文件夹中,然后在使用它们的类中导入源代码。我试图在这里使用该方法。我有它工作,但我修改了一些代码,现在我找不到它的错误。

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

public class getResources
{
public static void showPicture(int file)
{
    String stringFile = String.valueOf(file);
    JFrame window = new JFrame("Picture Window");
    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout());

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    InputStream input = classLoader.getResourceAsStream("/" + stringFile + ".png");

    JLabel picture = new JLabel(new ImageIcon("/" + stringFile + ".png"));
    JLabel indicate = new JLabel();
    indicate.setText(stringFile);
    panel.add(indicate);
    panel.add(picture);

    window.getContentPane().add(panel, BorderLayout.CENTER);
    window.pack();
    window.setLocationRelativeTo(null);
    window.setVisible(true);
}

}

1 个答案:

答案 0 :(得分:0)

如果您使用的是嵌入式资源(Jar或类路径上下文中的资源),那么

new ImageIcon("/" + stringFile + ".png")

错误,因为ImageIcon(String)期望命名值是文件而不是资源。

相反,你应该尝试使用更像

的东西
new ImageIcon(classLoader.getResource("/" + stringFile + ".png"))