我正在尝试制作Java桌面应用程序。
我想在JLabel
上设置图片。
我正在使用NetBeans。
从我的项目文件夹,我的目录结构是:
F:/>MARKET
|
|___src
|
|___lib
|
|___src
| |
| |__defaultpackage
| |
| demo.java
|__images
|
|
Logo1.png
我使用了以下代码:
jLabel4 = new JLabel(new ImageIcon("images/Logo1.png"));
它不起作用,我怎样才能获得输出?
答案 0 :(得分:4)
如果您想要Jar中包含的图像,则需要将images
文件夹移动到src
目录中。
这将要求您使用更像......
的东西jLabel4 = new JLabel(new ImageIcon(getClass().getResource("/images/Logo1.png")));
加载图片。
如果您希望图像保留在程序Jars的外部(并保持对文件系统开放),那么您需要确保程序的执行上下文位于项目文件夹的上下文中(在同一级别)作为src
和images
目录。)
这可以通过项目属性 - >完成。运行属性。默认情况下,运行时,程序将从正在运行的项目文件夹的上下文中执行。
如果您想使用外部资源,可以做两件事来检查它们......
一,使用与您要加载的外部资源相同的路径创建File
并检查它是否存在...
if (new File("images/Logo1.png").exists()) {...
或者,如果您似乎无法使其工作,请使用...
检查当前的运行环境System.out.println(new File(".").getCanonicalPath());
这将告诉您当前的工作目录(请注意这将抛出IOException
)。
您还可以使用系统属性user.dir
System.out.println(System.getProperty("user.dir"));
答案 1 :(得分:0)
您是否在构建路径下添加图像文件夹?
如果您使用eclipse,请添加此文件夹以构建路径。
然后你可以在你的代码中找到这张图片:
File file = new File("./images/test.png");
System.out.println(file.exists());
答案 2 :(得分:0)
通过创建适当的对象来尝试这一点,它可以为您提供清晰的处理图像,您可以稍后缩短项目。首先尝试使用C:/
JPanel panel = new JPanel();
ImageIcon icon = new ImageIcon("C:/Logo1.png");
JLabel label = new JLabel();
label.setIcon(icon);
panel.add(label);