【问题标题】:Eclipse relative file-path to the image file图像文件的 Eclipse 相对文件路径
【发布时间】:2013-10-15 23:24:31
【问题描述】:

我对 eclipse 上的相对文件路径有一个烦人的问题。我已经看过很多关于如何修复它的帖子,但对我没有任何帮助。

我的目录结构如下:

在C.java里面我想指出NotSet_16x16.png的相对路径

 ip_address_image_label.setIcon (new ImageIcon ("<relativePath>\\NotSet_16x16.png"));

【问题讨论】:

标签: java eclipse relative-path


【解决方案1】:

不要在代码中保留资源。创建一个单独的“资源”文件夹(一个 source 文件夹以及您已经拥有的 src)、一个 images 文件夹,并将这些 PNG 保存在那里。对其余资源执行相同操作(我看到您有一个 csv 和一个 txt 文件)。

完成此操作后,您将看到不应访问您的资源,记住您需要它们的类的位置,而只记住它们是资源并且它们都在同一个地方,即使用 /images/NotSet_16x16.png 之类的绝对路径获取它们。 因此,在您的课堂上,您可以执行以下操作:

new ImageIcon(this.getClass().getResource("/images/NotSet_16x16.png"))

【讨论】:

  • System.out.println(this.getClass().getResource("/images/NotSet_16x16.png"));此语句返回 NULL
  • 我刚刚为图像文件创建了一个新的资源文件夹。我用问题中的新目录结构更新了图片。
  • 试试 System.out.println(this.getClass().getResource("/NotSet_16x16.png"));因为您尚未在该源文件夹中创建文件夹(不要引用源文件夹,仅引用其中的文件夹)。
  • 我仍然建议您将新的源文件夹命名为“resources”并在其中创建单独的文件夹。否则你会很想为文档等创建一个新的 source 文件夹。干杯!
  • this.class 语法无效,您应该改用this.getClass()
【解决方案2】:

代码中的文件通常用作资源。编译后,它们最终得到类文件,最后在 .jar 文件中。

所以从Cas a resource 中读取data into a byte[] 并使用ImageIcon(byte[]) 构造函数来创建图像。


或者,您可以使用intermediate image 可以被using an URL to a resource 读取来创建图标。这可能更简洁,因为您不必费心将InputStream 读入byte[] 缓冲区。


请注意,如果您使用这两种方法中的任何一种,都可以直接使用文件名(因为类文件和图像在同一个包中)。您无需指定路径。

【讨论】:

    【解决方案3】:

    试试这个:

    String filePath = ".\\images\\NotSet_16x16.png";
    

    其中 «.\» 是 Eclipse 项目的根目录,«images» 是 Eclipse 项目中包含用户文件的文件夹。由于我们讨论的是 Windows 操作系统,我们必须使用«\» 而不是 «/»,就像在 Linux 中一样,但«\» 是保留符号,因此我们必须输入«\» 才能获得所需的结果。

    【讨论】:

      【解决方案4】:

      我为我的问题尝试了所有这些答案,但都没有奏效。我问了一个朋友,他完美地回答了我的问题。创建一个名为 Images 的源文件夹(即,如果您使用 eclipse,请右键单击您的项目 -> 新建 ->sourceFolder)。随便你怎么称呼它,我叫我的图像。放一些图片。

      现在我有了 JLabels,我给了他们 ImageIcons。看下面的代码。

          ImageIcon BPawn;
          ImageIcon WPawn;
          JLabel Label = new JLabel[8][8] //2D array of labels that gives each spot a position.
          public void setPieces(){
              //set up pawns in their respective positions.
              BPawn = new ImageIcon("Images/BPawn.png", "BPawn");
              WPawn = new ImageIcon("Images/WPawn.png", "WPawn");
          for(int i=0;i<Label[0].length;i++){
              Label[1][i].setIcon(BPawn);
              Label[6][i].setIcon(WPawn);
          }//end for
      
          }//end setPieces.
      

      在 setPieces() 方法中还有很多其他功能,但这一瞥是当您创建可执行 jar 并希望显示图像时如何引用源文件夹中的图像。

      【讨论】:

        猜你喜欢
        • 2012-06-19
        • 2012-01-21
        • 2018-01-27
        • 1970-01-01
        • 2020-11-03
        • 2018-06-05
        • 1970-01-01
        • 2017-11-04
        • 1970-01-01
        相关资源
        最近更新 更多