我有一个字符串中的图像路径我希望使用该路径在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);
}
答案 0 :(得分: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
自行选择...
答案 1 :(得分: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);
答案 2 :(得分:0)
确保您的路径正确无误。如果photo
字符串路径为"photo.jpeg"
,则您的路径应如下所示
ProjectRoot
photo.jpeg
src
如果您想将photo.jpeg
放在目录images
中,则应使用"images/photo.jpeg"
ProjectRoot
images
photo.jpeg
src
这是在考虑使用像Netbeans或Ecplise这样的IDE。