我试图在FinalRecreation中添加像这样的图像
new JLabel.setIcon(new ImageIcon("..\\FinalRecreation\\VOSB_01.jpg"));
然而,我知道为什么它不会起作用,图像永远不会出现。
答案 0 :(得分:0)
您需要将数据作为资源加载。当您作为资源加载时,您使用类加载器在类路径中搜索文件,因此它可以包含在jar中并随应用程序一起分发。
假设您的图像文件名在名为resources的顶级包中,以下代码可用于加载BufferedImages,需要花费一点点精力才能适应读取ImageIcon,但需要一些代码来打开InputStream到资源应该是一样的。
编辑:看起来ImageIcon有一个带Image的构造函数,所以你应该能够将BufferedImage传递给constructor。
String name = "resources/your_image.jpg";
try(BufferedInputStream input = new BufferedInputStream(
YourClass.class.getClassLoader().getResourceAsStream(name));) {
if(input != null) {
ImageIcon iicon = new ImageIcon(ImageIO.read(input));
// do something with iicon
}
else {
// could not find resource - do something
}
} catch (Exception ex) {
// problem loading resource - do something
}