2016-04-25 63 views
1

我正在使用Java中的swing创建一个简单的GUI,并且只是想将JPEG图像显示为框架中的标题。我的映像工作正常,但是文件路径会随着这些文件被发送给其他人而发生变化。图像存储在我将发送给其他人的文件夹中。我正在寻找一种方法来确保无论文件夹被移动到什么位置,图像都会显示。我是这个网站的新手,对于Java来说相当新颖。感谢您提前帮忙。java - 读取可能会改变的图像文件路径

相关代码:

ImageIcon numberImage = new ImageIcon("C:\\Users\\Me\\Desktop\\numberGame\\numbers.jpg"); 
Image image = numberImage.getImage(); 
Image newimg = image.getScaledInstance(300,120,java.awt.Image.SCALE_SMOOTH); 
numberImage = new ImageIcon(newimg); 
JLabel imageLabel = new JLabel("", numberImage, JLabel.CENTER); 
JPanel imagePanel = new JPanel(new BorderLayout()); 

imagePanel.add(imageLabel, BorderLayout.CENTER); 
+0

将图像放入类路径中,然后通过''classpath:/package/name/file.jpg''路径始终可用。您可能想要考虑构建项目的maven。 –

+1

[Java Swing:显示来自Jar内的图像]的可能副本(http://stackoverflow.com/questions/31127/java-swing-displaying-images-from-within-a-jar) – nhouser9

+0

@ nhouser9但如果程序不在Jar内,指定一个相对路径只适用于这个问题。我认为如果不是Jar,解决方案非常简单。 – rpfc

回答

1

为了确保图像可以在每个环境中显示,您必须指定相对路径而不是绝对路径。

你可以改变:

ImageIcon numberImage = new ImageIcon("C:\Users\Me\Desktop\numberGame\numbers.jpg"); 

要:

ImageIcon numberImage = new ImageIcon("numbers.jpg"); 

,这应该在其他环境中工作(与其他不同的路径)。 或者如果图像位于程序内部的目录中,请将“\ imageFolder \ numbers.jpg”

这应该工作,主要变化是用相对路径替换绝对路径。

+0

在我所有的搜索中,我没有看到像这样简单的解决方案。谢谢 – Justiciar