【问题标题】:How to change source file of images just to the folder?如何将图像的源文件更改为文件夹?
【发布时间】:2022-01-11 18:19:45
【问题描述】:

您好,我还是编程新手,我正在创建一个包含大量图像的 gui 应用程序。我想将我的作品发送给同事,但程序无法运行,因为图像将具有不同的文件目录:

labelPic.setIcon(new ImageIcon("C:\\Users\\Jordan\\eclipseworkspace\\GuiProject\\src\\images\\loadingPic.gif"));

当我将程序发送给他们时,我如何能够更改目录以便其他人可以打开和编辑程序?

【问题讨论】:

    标签: java directory


    【解决方案1】:

    最终,您会将应用打包到 jar 文件中。就像您的类文件是应用程序的基本组成部分一样,如果没有它们,安装就会中断,您的图标也是如此。

    因此,显而易见的答案是:将图像存储在您存储类文件的相同位置,并使用相同的机制来加载它们。即使它们是一个 jar (意思是,它们根本不是一个文件,而且你根本不能使用那个构造函数 - 根本,那只是用于文件,目的是在这里甚至没有文件,目的是在一个罐子里有一个条目)。

    幸运的是,这很容易,但一两件事取决于您如何构建/开发应用程序。无论您使用什么构建,您的代码都应该是这样的:

    labelPic.setIcon(TheClassThisCodeIsIn.class.getResource("/images/loadingPic.gif"))
    

    唯一的问题是:您需要对构建过程做些什么才能使其正常工作。从那条路径的风格来看,我很确定答案是:没什么,这会很好地工作,无论是直接在 eclipse 中运行它还是当你告诉 eclipse 将它打包到一个 jar 中时。

    那行的作用

    Foo.class 是有效的 java,但有点异国情调。这意味着:给我一个命名类的java.lang.Class<?> 引用。您需要自己的类的引用,因为我们将要求从加载资源的任何位置加载资源。我们将把这些图像放在这段代码的类文件所在的同一位置,这就是为什么我们要求您自己的类实例获取这些数据。

    getResource 返回一个 URL。 ImageIcon 知道如何处理它,您不必知道。

    /images/loadingPic.gif 然后指定资源名称。 这不是文件名。因此,正斜杠(正如我所说,如果你最终在 Windows 上运行它并不重要,而不是文件路径,Java 资源名称)。因为我们以斜杠开头,所以加载器将查看 YourClass.class 所在位置的“根”。例如,如果 YourClass.class 在 jar 文件中,它将在 jar 的“根”中查找名为“images”的文件夹,并从那里查找名为“loadingPic.gif”的条目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-12
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多