Reputation: 3325
I'm trying to load an image file.
File imageCheck = new File("Users/me/Documents/workspace/ChineseChess/src/RCar.gif");
if (imageCheck.exists())
System.out.println("Image file found!");
else
System.out.println("Image file not found! :(");
button.setIcon(new ImageIcon("Users/me/Documents/workspace/ChineseChess/src/RCar.gif"));
Thanks!
Upvotes: 0
Views: 17161
Reputation: 1456
yes...it takes the relative path.
public static final String FILE_PATH = "src/test/resources/car.png";
Upvotes: 1
Reputation: 1845
You can load the icon quite easily when it is in the resource folder of the class it belongs to at runtime. See http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource%28java.lang.String%29
Within the class your.packagename.YourClassName
you could write the following:
String folderName = YourClassName.class.getName().replace('.', '/' );
String urlString = "/"+folderName+"/RCar.gif";
URL fileUri = YourClassName.class.getResource(urlString);
button.setIcon(new ImageIcon(fileUri));
The urlString would be /your/packagename/YourClassName/RCar.gif
. Of course this is also where icon should be at runtime.
HTH
Upvotes: 3
Reputation: 5373
If you want to use relative paths, they are going to be relative to the project's root, or when its deployed, the directory that the jar file resides in. You can use src/RCar.gif
as your filename.
It would be better if you created a separate folder for resources, then address them with new File("res/RCar.gif");
Another option is to put them in the src folder and address them using the classloader.
Upvotes: 3
Reputation: 347194
If I recall correctly, Eclipse requires all resources to be placed in the resources directory. These will be automatically bundled with your application when you export it.
At runtime, you would simply use Class#getResource("/path/to/your/resource")
where the path is the location from the "resource" folder
Upvotes: 3