Как я могу найти java. net .URL для изображения, необходимого для ImageIcon? - PullRequest
2 голосов
/ 09 марта 2020

Я пытаюсь добавить ImageIcon в JLabel, который добавляю в JPanel, чтобы получить Графику для моей игры Java Swing. Однако я не могу даже создать ImageIcon для JLabel с моим текущим кодом. Я уже пробовал просматривать переполнение стека, но не смог найти ответ, который бы соответствовал моей проблеме. Пожалуйста, помогите

protected ImageIcon createImageIcon(Class c, String file) {
        File f = new File(file);
        String path = f.getAbsolutePath();

        java.net.URL imgURL = c.getResource(path);

        System.out.println(imgURL);
        System.out.println(path);

        if (path != null) {
            return new ImageIcon(path);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }

Вызывается из:

Graphic startScreenG = new Graphic();
        Icon startScreenI = startScreenG.createImageIcon(MyAppClass, "download.jpg");
        JLabel startScreen = new JLabel(startScreenI);
        Screen.add(startScreen);

Возвращает:

null

C: \ Users * justmyname * \ Documents \ NetBeansProjects \ IA \ download.jpg

1 Ответ

1 голос
/ 09 марта 2020

Обратите внимание, что getResource работает по имени, а не по пути к файлу. Таким образом, чтобы c.getResource(path) работал так, как вы хотите, файл "download.jpg" должен находиться в пути к классам IIR C. Но поскольку у вас уже есть объект File, представляющий нужный файл изображения, вы можете просто вызвать f.toURI().toURL() Обратите внимание, что f.toURL() устарело.

Надеюсь, это поможет!

...