Какой правильный путь для отображения файла ImageIcon PNG для Windows 7?

Я хотел проверить наличие программы с простым изображением PNG. Я написал короткую программу, которая делает это, но я могуКажется, путь не правильный. Я проверил, проверил снова, перепроверил, и четыре раза проверил мое имя пути, чтобы не понять это правильно, но это изображение не будет отображаться, независимо от того, что я делаю. Я использовал короткий класс, написанный Oracle в документации ImageIcon (creaetImageIcon()) для достижения этой цели, но это не таккажется, чтобы помочь. Я'Выложу всю программу ниже, так как она очень короткая.

package practiceImages;

import java.awt.BorderLayout;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class ImageIconGUITest {

    public static void main(String[] args) {
        ImageIconGUITest gui = new ImageIconGUITest();
        gui.display();
    }

    private ImageIcon createImageIcon(String path, String description) {
        java.net.URL imgURL = getClass().getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL, description);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }

    private void display() {
        JFrame frame = new JFrame();
        JLabel label = new JLabel(createImageIcon(
                "Users/Evan/javaItems/Sprites_and_Other_Art/green.png", "the color green"));

        frame.add(BorderLayout.CENTER, label);
        frame.setSize(500, 500);
        frame.setVisible(true);
    }
}
 user239823319 мая 2013 г., 07:26
@MadProgrammer ^ Могу опубликовать это как ответ.
 nIcE cOw19 мая 2013 г., 07:33
@ user2398233: этоответ тоже может помочь вам в данном направлении
 MadProgrammer19 мая 2013 г., 07:24
Вы можете проверить это с помощью System.out.println (new File ("C: /Users/Evan/javaItems/Sprites_and_Other_Art/green.png») .getAbsolutePath ()) `, который даст вам полный путь.
 MadProgrammer19 мая 2013 г., 07:23
1- Убедитесь, что файл существует в указанном местеSystem.out.println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").exists()) должен вернуть true, иначе файл находится не в том месте. 2- Относительный путь в основном означает местоположение пути относительно выполнения программ. Итак, если вы запускали программу изC:/Program Files/MyAwesomeApplication например, относительный путьUsers/Evan/javaItems/Sprites_and_Other_Art/green.png будет выглядетьC:/Program Files/MyAwesomeApplication/Users/Evan/javaItems/Sprites_and_Other_Art/green.png
 user239823319 мая 2013 г., 07:32
@MadProgrammer Как мне получить новыйC:/Program Files/insertAppNameHere попасть туда? Я просто делаю новую папку или как?
 MadProgrammer19 мая 2013 г., 07:31
Готово, надеюсь тоже почистил ...
 user239823319 мая 2013 г., 07:13
@MadProgrammer Можете ли вы подробнее рассказать об относительном пути? Что это значит? Кроме того, добавление спецификации приводат работа.
 MadProgrammer19 мая 2013 г., 07:34
Это'Это всего лишь пример. Когда вы запускаете свою программу, вы можете сделатьSystem.out.println(new File(".").getAbsolutePath()) и он выведет текущий каталог, в котором запущено приложение. Проблема в том, что Java добавляетUsers/Evan/javaItems/Sprites_and_Other_Art/green.png путь к концу этого и пытается найти файл в месте, которое не существует
 MadProgrammer19 мая 2013 г., 07:10
Во-первых, выМы указали относительный путь, поэтому система ищет изображение относительно места, где вы выполнили программу. Во-вторых, путь должен иметь спецификацию диска или, по крайней мере, ведущий/, В зависимости от вашей настройки, что-то вродеC:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png должно работать (может потребоваться изменить спецификацию диска, чтобы она соответствовала вашей системе)

Ответы на вопрос(6)

C:\\Test\\test.png и неC:/Test/test.png

у меня была эта проблема, и я исправил ее. Я покажу вам пример:

public Driver () {

    ImageIcon us = new ImageIcon("C:\saeed.gif"); // OS cant find it 
    ImageIcon uk = new ImageIcon("C:\\saeed0.gif"); // OS can 


  JButton button = new JButton ("Click here "  , us ) ;

  button.setRolloverIcon(uk);

  add(button);
}

выМы указали относительный путь, поэтому система ищет изображение относительно места, где вы выполнили программу.

Во-вторых, путь должен иметь спецификацию диска или, по крайней мере, ведущий/, В зависимости от вашей настройки, что-то вродеC: /Users/Evan/javaItems/Sprites_and_Other_Art/green.png» должно работать (может потребоваться изменить спецификацию диска, чтобы она соответствовала вашей системе)

В-третьих, убедитесь, что файл существует в указанном месте,System.out.println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").exists()) должен вернутьсяtrueв противном случае файл находится не в том месте.

Относительный путь в основном означает местоположение пути относительно выполнения программ. Итак, если вы запускали программу изC:/Program Files/MyAwesomeApplication например, относительный путьUsers/Evan/javaItems/Sprites_and_Other_Art/green.png станет абсолютным путемC:/Program Files/MyAwesomeApplication/Users/Evan/javaItems/Sprites_and_Other_Art/green.png, Это описывает путь от корневого местоположения до рассматриваемого файла / папки.

Вы можете проверить это с помощьюSystem.out.println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").getAbsolutePath(‌​)) который даст вам полный путь ".

 Andrew Thompson19 мая 2013 г., 07:37
Да, я просто размышлял над тем, что означал этот комментарий ..
 MadProgrammer19 мая 2013 г., 07:36
На какую часть ??
 Andrew Thompson19 мая 2013 г., 07:31
убедитесь, что файл существует  +1
 user239823319 мая 2013 г., 07:35
полный путь дал мне C: \ Users \ Evan \ javaItems \ Sprites_and_Other_Art \ green.png Какого черта?
 MadProgrammer19 мая 2013 г., 08:23
@ user2398233 Конечно, этоэто уже абсолютный путь;). Попробуйте оставитьC:/ и посмотрим что получишь;)
 user239823319 мая 2013 г., 07:42
@MadProgrammer используяSystem.out.println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").getAbsolutePath)) просто дал мне тот же путь.

getResource(String) Метод найдет только те ресурсы, которые находятся во время выполнения класса приложения. Поскольку это изображение выглядит как ресурс приложения (т. Е. Предоставляется вами как часть приложения), онодолжен быть помещенным в путь к классу во время выполнения.

НАПРИМЕР. У большинства IDE есть место, куда вы можете поместить ресурсы в структуру проекта, которая будет автоматически включена во время выполнения. Переместить (или скопировать) изображение на этот путь.

Тогда это становится вопросом обеспечения правильногоString, Давайте представим, что ваш проект настроен примерно так:

бункерЦСИкомнашApplication.javaРесурсыgreen.png

ТакApplication.java вpackage com.our;, пока изображение находится в пути.resources/green.png

Если доступ к изображению изApplication, правильный путь будет (барабанная дробь, пожалуйста ..)

"/resources/green.png"

ЗаметкиВедущий/ это важно. Это говорит JRE, что мы хотим искать изображение изкорень пути к классам, в отличие от использования пути относительно пакета самого класса.Правильный случай также важен. Строка"/resources/green.png" будутне найдите изображение с именем"/resources/Green.png" или же ,"/resources/green.PNG"Пути затменияЩелкните правой кнопкой мыши наsrc каталог, выберитеProperties внизу меню.

Навигация (используя обычный способбуду использовать без Eclipse) в каталоге.LocationЗатем перейдите в родительский каталог.Вы должны увидетьbin каталог, который содержит классы и (надеюсь) изображение.
 Andrew Thompson19 мая 2013 г., 08:37
Когда я выбираю предпочтения  Я сказал вам, чтобы выбратьProperties, Я расширил свое объяснение в редактировании, чтобы ответить ..
 Andrew Thompson19 мая 2013 г., 07:44
А не было»не работает, ну да ладно "  Мы'понадобится больше и лучшая информация, если мы хотим иметь возможность решить эту проблему. НАПРИМЕР. какие конкретные шаги вы предприняли, чтобы попробовать это? Какая IDE (если есть) используется? Что такое списокbin (Я думаю, что это каталог Eclipse runt-time)?
 user239823319 мая 2013 г., 08:03
@AndrewThompson Что вы подразумеваете под "распечатка каталога бина "? Я нене знаю, что это значит ...
 user239823319 мая 2013 г., 07:46
@AndrewThompson Console отправлено: Не удалосьt find file: /resources/green.png Сделал все, что вы сказали, прочитал его несколько раз, и это казалось логичным. Не уверен, что, черт возьми, происходит.
 MadProgrammer19 мая 2013 г., 07:32
+1 за предложение встроенных / прикладных ресурсов
 user239823319 мая 2013 г., 08:12
@AndrewThompson Шаг 3: "Навигация (используя обычный способиспользовать без Eclipse) в этот каталог. " Какой каталог? Когда я выбираю настройки,Это просто вкладка «Ресурс» и «Настройки запуска / отладки». Я нене знаю, что тыговорим больше или почему яя делаю это?
 Andrew Thompson19 мая 2013 г., 07:41
@MadProgrammer Если вам понравилось, проверьтеинформация о встроенных ресурсах. страница который я и trashgod обновили, чтобы быть очень специфической информацией Java. стр. ;)»
 Andrew Thompson19 мая 2013 г., 08:07
1) Щелкните правой кнопкой мыши наsrc каталог. 2) ВыберитеProperties внизу меню. 3) Навигация (используя обычный способ, которым выиспользовать без Eclipse) в этот каталог. 4) Затем перейдите в родительский каталог. 5) Вы должны увидетьbin каталог ..
 Andrew Thompson19 мая 2013 г., 07:55
не мог»не могу найти файл: "  Это было бы лучше заявлено какCouldn't find resource так как .. к моменту развертывания (или, возможно, после сборки) он больше не будетбытьFile так много, как запись в банке. Вы до сих пор не дали мне списокbin каталог. Обратите внимание, что.java файлы находятся вsrc но классы(и путь к классу во время выполнения) как правило, вbin, Убедитесь, что изображение было сделано (было скопировано) в.bin
 Andrew Thompson19 мая 2013 г., 08:49
Обратите внимание: эта ситуация напоминает мне, почему новые программистыне следует использовать 'Automagic» IDE. В ту минуту, когда происходит что-то, что не соответствует плану, это приводит к полному замешательству просто потому, что вымы еще не освоили концепции путей классов во время выполнения и времени компиляции (и разницу между ними). Если не путь к классу, это будет что-то еще. Возможно, вам следует отложить на время среду IDE и использовать более простой редактор (например, TextPad) для создания исходного кода.
 user239823319 мая 2013 г., 07:46
^ И яиспользую Eclipse. "
 user239823319 мая 2013 г., 19:10
@AndrewThompson Когда я иду в родительскую папку папки ресурсов, которую я сделал, это 'Src. Моя папка ресурсов, хотя я помещаю изображение в нее, не может быть открыта, предположительно, потому что в ней ничего нет, хотя я помещаю в нее файл green.png через свое рабочее пространство.
 user239823319 мая 2013 г., 07:40
вздох А не было»не работает, ну да ладно.

этот код поможет вам

txtPath.setText(lblImage.getIcon().toString());

// txtPath - текстовое поле, используемое для воспроизведения пути // lblImage - метка, которая показывает изображение

JButton btnBanana = new JButton("New button");
btnBanana.setIcon(new ImageIcon("D:\\Android\\Company\\images\\bananas-icon.png"));

Ваш ответ на вопрос