Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将图像添加到标签时,JFrame上不显示图像_Java_Image_Swing_Jlabel_Imageicon - Fatal编程技术网

Java 将图像添加到标签时,JFrame上不显示图像

Java 将图像添加到标签时,JFrame上不显示图像,java,image,swing,jlabel,imageicon,Java,Image,Swing,Jlabel,Imageicon,我已经编写了一些代码行,这些代码应该在JFrame中将图像显示为标签。这是代码 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,

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

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
。尝试将
图像的
ImageObserver
设置为
标签
,如下所示:

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);
ImageIcon image=新的ImageIcon(“funcy.jpg”);
JLabel标签=新的JLabel();
label.setIcon(图像);

image.setImageObserver(标签);//使
frame.setVisible(true)你最后一次调用-Swing是懒惰的,当它改变时不会更新UI,你需要自己去做(这是对性能的优化)。还有,什么用户15358848said@user15358848是的,无法加载图像,如何修复此问题?我也不能用ImageIO打开它。应用程序资源在部署时将成为嵌入式资源,所以现在就开始像访问一样访问它们是明智的。必须通过URL而不是文件访问。有关如何形成URL的信息,请参见。实现
ImageObserver
。它将观察通过
ImageIcon
@传递给它的任何
图像的加载情况,如果并且仅当您调用
Image.setImageObserver(标签)时,它才会观察它。否则,
label.setIcon(图像)是不够的,因为它不会检查提供的
图标是否是
图像图标
。因此,还需要调用
image.setImageObserver(标签)。如果您按照文档上的链接进行操作,您可以清楚地看到推荐的方法是使用
setImageIcon
以及
setIcon
。正如我在回答中所说,
组件
是一个
图像观察者
。我必须承认,虽然这可能不是一个明确的声明,所以是的,你的评论应该是答案的一部分