1

我在字符串中有一个图像的路径,我想使用该路径在 jlabel 上显示它。请帮我。

if(!ar.get(16).equals("empty")){
    String photo=(String)ar.get(16);

    System.out.println(photo);
    // if(!photo.equals(""))
    //  pic.setText(photo);

    Image image=Toolkit.getDefaultToolkit().getImage(photo);;
    ImageIcon img=new ImageIcon(image.getScaledInstance(view.jLabel5.getWidth(), view.jLabel5.getHeight(), 0));


    //JpegReader jrdr=new JpegReader();
    //view.jLabel5.setSize(img, image.getWidth());
    view.jLabel5.setPreferredSize(new Dimension(100, 100));
    view.jLabel5.setIcon(img);

}
4

3 回答 3

3

如果图像是嵌入式资源(即存在于应用程序上下文中/与应用程序 Jar 捆绑在一起),那么您需要使用getResource它来访问它。

Toolkit.getDefaultToolkit().getImage期望String传递给它的是文件系统上的文件。

如果图像是嵌入的,那​​么您将需要使用更像...

Toolkit.getDefaultToolkit().getImage(getClass().getResource(photo))

加载它。

如果图像是从文件系统加载的,你可以使用

File file = new File(photo);
if (file.exists()) {
    // Attempt to load the image
} else {
    // Show error message.
}

由于这种Toolkit#getImage工作方式,如果图像由于某种原因无法加载,它将不会提供任何详细信息。

相反,您应该使用,如果由于某种原因无法加载图像ImageIO,它将引发...IOException

BufferedImage img = ImageIO.read(getClass().getResource(photo));

或者

BufferedImage img = ImageIO.read(new File(photo));

取决于图像所在的位置。

看看阅读/加载图像

您还应该避免setPreferredSize显式调用并简单地允许JLabel做出自己的选择......

于 2013-11-12T05:13:24.690 回答
1

将图像文件放入项目中。在一个单独的文件夹下。

ImageIcon image = new ImageIcon(this.getClass().getResource("/images/abc.jpg"));
JLabel imageLabel = new JLabel(image, JLabel.CENTER);

如果您想为计算机上的任何其他位置加载图像,那么,

ImageIcon image = new ImageIcon("C:/images/image.png");
JLabel imagelabel = new JLabel(image);
于 2013-11-12T05:20:22.690 回答
0

确保您的路径正确。如果你的photo字符串路径是"photo.jpeg",你的路径应该是这样的

ProjectRoot
        photo.jpeg
        src

如果你想把它放在photo.jpeg一个目录images中,你应该使用"images/photo.jpeg"

ProjectRoot
        images
            photo.jpeg
        src

这是考虑到您正在使用像 Netbeans 或 Ecpise 这样的 IDE。

于 2013-11-12T05:06:02.107 回答