Java Eclipse图像文件的相对文件路径

Java Eclipse图像文件的相对文件路径,java,eclipse,relative-path,Java,Eclipse,Relative Path,我对eclipse上的相对文件路径有一个恼人的问题。我已经看过很多关于如何修复它的帖子,但是没有一篇适合我 我的目录结构如下所示: 在C.java的内部,我想指出NotSet_16x16.png的相对路径 ip_address_image_label.setIcon (new ImageIcon ("<relativePath>\\NotSet_16x16.png")); ip地址图像标签.setIcon(新图像图标(\\NotSet\u 16x16.png)); 通常代码中的

我对eclipse上的相对文件路径有一个恼人的问题。我已经看过很多关于如何修复它的帖子,但是没有一篇适合我

我的目录结构如下所示:

在C.java的内部,我想指出NotSet_16x16.png的相对路径

 ip_address_image_label.setIcon (new ImageIcon ("<relativePath>\\NotSet_16x16.png"));
ip地址图像标签.setIcon(新图像图标(\\NotSet\u 16x16.png));

通常代码中的文件用作资源。在编译之后,它们以类文件结束,最后是
.jar
文件

因此,从
C
类中读取图像,并使用构造函数创建图像


或者,您可以使用可由读取的创建图标。这可能更简洁,因为您不必费心将
InputStream
读入
byte[]
缓冲区



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

通常代码中的文件用作资源。在编译之后,它们以类文件结束,最后是
.jar
文件

因此,从
C
类中读取图像,并使用构造函数创建图像


或者,您可以使用可由读取的创建图标。这可能更简洁,因为您不必费心将
InputStream
读入
byte[]
缓冲区



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

不要在代码中保留资源。创建一个单独的“资源”文件夹(一个源文件夹以及您已有的src)、一个图像文件夹,并将这些PNG保留在其中。对其余的资源也这样做(我看到您有一个csv和一个txt文件)

完成此操作后,您将看到,在访问资源时,您不应该考虑需要它们的类的位置,而应该考虑它们是资源,并且所有资源都位于同一位置,即使用像/images/NotSet_16x16.png这样的绝对路径来获取它们。 所以在你的课堂上,你可以做一些类似的事情:

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

不要把资源和代码放在一起。创建一个单独的“资源”文件夹(一个源文件夹以及您已有的src)、一个图像文件夹,并将这些PNG保留在其中。对其余的资源也这样做(我看到您有一个csv和一个txt文件)

完成此操作后,您将看到,在访问资源时,您不应该考虑需要它们的类的位置,而应该考虑它们是资源,并且所有资源都位于同一位置,即使用像/images/NotSet_16x16.png这样的绝对路径来获取它们。 所以在你的课堂上,你可以做一些类似的事情:

new ImageIcon(this.getClass().getResource("/images/NotSet_16x16.png"))
试试这个:

String filePath = ".\\images\\NotSet_16x16.png";
其中«.\»是Eclipse项目的根目录,«images»是Eclipse项目中包含用户文件的文件夹。因为我们谈论的是Windows操作系统,所以我们必须使用«\»而不是«/»,就像在Linux中一样,但是«\»是保留符号,所以我们必须键入«\»以获得所需的结果。

试试这个:

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

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

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

现在我有了JLabel,我给了他们图像图标。请看下面的代码

    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.
ImageIcon-BPawn;
图像图标WPawn;
JLabel Label=new JLabel[8][8]//为每个点提供位置的二维标签数组。
公共无效设定项(){
//把兵放在各自的位置上。
BPawn=新的图像图标(“Images/BPawn.png”,“BPawn”);
WPawn=新的图像图标(“Images/WPawn.png”,“WPawn”);

对于(int i=0;i我尝试了所有这些答案来解决我的问题,但没有一个有效。我问了一个朋友,他完美地回答了我的问题。创建一个名为Images的源文件夹(即,如果您使用eclipse,右键单击您的项目->新建->源文件夹)。无论您想叫什么,我都叫我的Images。在其中放入一些图像

现在我有了JLabel,在那里我给了他们图像图标

    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.
ImageIcon-BPawn;
图像图标WPawn;
JLabel Label=new JLabel[8][8]//为每个点提供位置的二维标签数组。
公共无效设定项(){
//把兵放在各自的位置上。
BPawn=新的图像图标(“Images/BPawn.png”,“BPawn”);
WPawn=新的图像图标(“Images/WPawn.png”,“WPawn”);

对于(int i=0;i)您的问题是什么?如何在Eclipse中编写相对路径?@Alex这实际上可能与Eclipse没有太多关系。相关:您的问题是什么?如何在Eclipse中编写相对路径?@Alex这可能与Eclipse没有太多关系。相关:System.out.println(This.getClass().getResource(“/images/NotSet_16x16.png”);此语句返回null我刚刚为图像文件创建了一个新的资源文件夹。我使用问题中的新目录结构更新了图片。请尝试System.out.println(this.getClass().getResource(“/NotSet_16x16.png”);因为您尚未在该源文件夹中创建文件夹(不要引用源文件夹,只引用其中的文件夹)。我仍然建议您将新的源文件夹命名为“resources”,并在其中创建单独的文件夹。否则,您将尝试创建新的源文件夹