图像不会出现在Jlabel,JFrame上。尝试过多种解决方案

问题描述 投票:0回答:1

我正在尝试将图像添加到JLabel上以放置在JFrame上,经过数小时的研究,它仍然只加载JFrame底部的2个按钮。有问题的图像与该类位于同一目录中,但文件夹位于下方(我曾尝试在同一文件夹中使用,但无济于事)。我对编码很陌生,所以请多多包涵。

这是大多数代码,但按钮的动作侦听器除外(该类也扩展了JFrame)

JPanel jp = new JPanel();
JPanel jb = new JPanel(new GridLayout(1, 2, 20, 20));
JLabel jl = new JLabel();
JButton end = new JButton("End");
JButton next = new JButton("Next");

jl.setIcon(new ImageIcon("notes/daWay.jpg"));

setSize(900, 700);
jp.add(jl, new FlowLayout());
add(jp);
jb.add(end);
jb.add(next);
add(jb, BorderLayout.PAGE_END);

setVisible(true);

[我已经尝试过:设置标签范围,检查ImageIcon是否为null(不是),将ImageIcon设置为自己的变量,然后将该变量添加到JLabel,getContentPane for JFrame,使用带有try和catch的BufferedImage和ImageIO(标签上带有url(不带url),getClass,getClassLoader,getResource,imageUpdate,带FlowLayout(不带Flowflow),jpeg和pngs,清除除一个标签外的框架以及许多其他内容。即使在运行图像时扩展窗口也不会出现,请帮助!

((将来我也想清除标签并添加新图像,但那时我还不行,因为我无法克服此错误,但是如果上下文有助于解决方案,那么上下文)

java swing jframe jlabel imageicon
1个回答
0
投票

ImageIcon constructor you're using采用文件路径作为参数。

为了使您的代码正常工作,您将必须传递绝对文件路径,因为相对文件是基于当前目录而不是基于包含文件路径的类来解析的。

当前目录是从中执行java命令的目录。

您要做的是使用类加载器加载图像。这样您就可以将图像嵌入到在创建应用程序时将创建的jar文件中。

因此您应该使用

new ImageIcon(YourClass.class.getResource("notes/daWay.jpg"))

这将从notes包的子包YourClass中的daWay.jpg资源加载图像。

© www.soinside.com 2019 - 2024. All rights reserved.