我对eclipse上的相对文件路径有一个恼人的问题。我已经看过很多关于如何解决这个问题的帖子,但对我来说没什么用。
我的目录结构如下:
在C.java里面我想指出NotSet_16x16.png的相对路径
ip_address_image_label.setIcon (new ImageIcon ("<relativePath>\\NotSet_16x16.png"));
答案 0 :(得分:3)
不要使用代码保留资源。创建一个单独的“资源”文件夹(源文件夹以及您已有的src),其中包含一个图像文件夹,并将那些PNG保留在那里。对其余资源执行相同操作(我看到您有csv和txt文件)。
完成后,你会发现你不应该考虑到你需要它们的类的位置来访问你的资源,但只考虑到它们是资源而且它们都在同一个地方,即使用/images/NotSet_16x16.png等绝对路径获取它们。 所以在你的班上你可以做类似的事情:
new ImageIcon(this.getClass().getResource("/images/NotSet_16x16.png"))
答案 1 :(得分:1)
通常,代码中的文件用作资源。编译后,他们最终得到了类文件,最后是.jar
文件。
请阅读C
班data into a byte[]
中的as a resource并使用ImageIcon(byte[])
构造函数创建图片。
或者,您可以使用intermediate image来using an URL to a resource读取{{3}}来创建图标。这可能更加整洁,因为您无需在将InputStream
读入byte[]
缓冲区时烦恼。
请注意,如果您使用这些方法中的任何一种,则可以直接使用文件的名称(因为类文件和图像位于同一个包中)。您无需指定路径。
答案 2 :(得分:1)
试试这个:
String filePath = ".\\images\\NotSet_16x16.png";
其中«。\ _»是Eclipse项目的根目录,«images»是一个包含Eclipse项目内用户文件的文件夹。由于我们讨论的是Windows操作系统,我们必须使用«\»而不是«/»,就像在Linux中一样,但«\ _»是保留的符号,所以我们必须输入«\»来获得所需的结果。
答案 3 :(得分:0)
我为我的问题尝试了所有这些答案,但没有一个能够奏效。我问了一位朋友,他完美地回答了我的问题。创建一个名为Images的源文件夹(即如果您正在使用eclipse,请右键单击您的项目 - &gt; new - &gt; 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并想要显示图像时如何引用源文件夹中的图像。