繁体   English   中英

将图像添加到 label 时,JFrame 上没有显示图像

[英]No image showing on JFrame when adding image to label

我已经编写了一些代码行,应该在 JFrame 中将图像显示为 label。 这是代码。

ImageIcon image = new ImageIcon("funny.jpg");

JLabel label = new JLabel();
label.setIcon(image);

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
frame.add(label);

正如您在问题的评论中被提示的那样,我认为您应该注意确保文件存在于指定位置,例如使用getResource

除此之外,您没有将图像的观察者模式用于JLabel 尝试将imageImageObserver设置为label ,如下所示:

ImageIcon image = new ImageIcon("funny.jpg");

JLabel label = new JLabel();
label.setIcon(image);
image.setImageObserver(label); // <-- Added this line.

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
frame.add(label);

否则,请参阅setImageObserver上的相应文档

您也可以查看相应的教程部分

这恰好是因为,据我所知, ImageIcon使用MediaTracker异步加载图像,因此当您构造ImageIcon的实例时,它将返回而不会首先阻塞,直到图像完全加载。 设置ImageIconImageObserver将确保您提供的ImageObserver将在 state 更改时收到有关加载图像的 state 的通知。 Component (它是一个ImageObserver )的默认实现会重新绘制自身,因此您将能够在图像准备好时看到完全加载的图像。

作为替代方案,您始终可以使用ImageIO#read它将阻塞直到图像完全加载到 memory (但它只会返回动画 GIF 图像中的单个)。

虽然我没有测试它,但这是我经常遇到的一个问题,所以我认为它应该可以工作。 如果有或没有,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM