У меня проблемы с отображением значков в JList, который я создал. Я передаю путь к функции getResource (), а затем сохраняю ресурс в объекте URL. Однако каждый раз, когда я вызываю функцию getResource (), она возвращает ноль, даже если изображения существуют в каталоге.
Я пытался посмотреть на stackoverflow и другие сайты, но не могу найти решение этой проблемы. Я даже пытался хранить изображения в разных местах в каталоге моего проекта, но безрезультатно. Если это поможет, я использую Eclipse IDE. Поэтому я сохранил файлы в / src /, / src / resources / и в папке проекта.
Вот мой код:
import java.awt.*;
import java.io.*;
import java.net.URL;
import java.util.ArrayList;
import javax.swing.*;
@SuppressWarnings("serial")
public class JListRenderer extends DefaultListCellRenderer
{
private static ArrayList<CakeRecipe> cRecipes;
private ImageIcon[] images;
// Index of cake recipe
private int cakeIndex;
JListRenderer(ArrayList<CakeRecipe> recipes)
{
cRecipes = recipes;
// Initializes an array of ImageIcons FileHander.jpgCounter() counts the amount of JPG's in the folder, FileHandler.getPath() gives you the filepath
images = new ImageIcon[FileHandler.jpgCounter(new File(FileHandler.getPath()))];
for(int i = 0, j = images.length; i < j; i++)
images[i] = createImageIcon("/resources/" + cRecipes.get(cakeIndex).getPhoto()); // cRecipes.get().getPhoto() gives you the filename of the village only (e.g.: photo.jpg)
}
protected static ImageIcon createImageIcon(String path)
{
URL imgURL = JListRenderer.class.getResource(path);
if(imgURL != null)
return new ImageIcon(imgURL);
else
{
System.err.println("Could not find image. Certain menu elements may not display properly");
return null;
}
}
...
Должен ли этот код работать или я не правильно использую URL или getResource ()? Изображения находятся в каталоге, и я передаю путь, идентичный пути изображения. Пример:
"/resources/photo.jpg"
Любая помощь будет принята с благодарностью. Спасибо.
РЕДАКТИРОВАТЬ: проблема была с Eclipse. Он не зарегистрировал ресурсы в пути сборки. Простое «Обновление» устранило проблему. Спасибо за вашу помощь, всем.