【问题标题】:Why does my Image not load in this path, but in another?为什么我的图像没有加载到这个路径中,而是加载到另一个路径中?
【发布时间】:2021-07-28 03:30:05
【问题描述】:

我尝试将图像放到 JButton 上。写下图片的路径后,运行程序,然后图片不在按钮上。代码示例如下:

public static JButton start = new JButton(new ImageIcon("resources//img//menu//Start_Game.png"));

“resources”文件夹位于“src”文件夹中。 Here is the Hirarchy in Eclipse

在我仔细检查后,我拼写正确,我换了一条路。

public static JButton start = new JButton(new ImageIcon(System.getProperty("user.home") + "//Tindir//Hauptmenue//Start_Game.png"));

它突然起作用了。很明显,第一条路径不正确。

问题是否可以在与代码相同的项目文件夹中输入图像的路径?

【问题讨论】:

  • 你将资源文件夹放在顶层项目层下,并使用“/menu/item.png”或“/game/item.png”分别访问菜单或游戏子文件夹中的图像。
  • 应用程序资源在部署时将成为嵌入式资源,因此明智的做法是立即开始访问它们。 embedded-resource 必须通过 URL 而不是文件访问。请参阅info. page for embedded resource 了解如何形成 URL。

标签: java image swing icons embedded-resource


【解决方案1】:

是的,但不是那样 - 这些参数是文件名,并且 java 代码不会部署为一袋文件。它被部署为一个 jar 文件。 jar 文件中的条目不算数,并且不能永远与此 API 一起使用。

所以,不要使用这个调用。使用另一个接受 URL 的方法,因为您当然 可以 将文件或 jarfile 中的条目表示为其中之一:

MyClass.class.getResource("Start_Game.png")

这就是您在该代码中输入的内容,而不是 "resources/etc/Start_Game.png"。这会在与 MyApp.class 完全相同的位置查找名为 Start_Game.png 的资源,即使该资源是在 jar 文件中找到的,从数据库中加载,从互联网直播 - 无论如何。您使用的是相同的机制。

如果您的 Start-Game 文件位于其他位置,请以 / 开头。看来你想在这里/img/menu/Start_Game.png

这个技巧是了解你在做什么的简单方法:

class MyClass {
    public static void main(String[] args) {
        System.out.println(MyClass.class.getResource("MyClass.class"));
    }
}

你会用那个输出弄明白的。

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 2013-02-13
    • 2015-06-15
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 2016-08-12
    相关资源
    最近更新 更多