#java #eclipse #imageicon
#java #eclipse #imageicon
Вопрос:
Итак, я только что записал несколько простых кодов, которые просто отображают изображение в JButton. Что я сделал, так это написал код:
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JFrame{
public static ImageIcon bf;
public static JPanel p;
public static JButton b;
public static void main (String args[]){
Main main = new Main();
bf = new ImageIcon("car.png");
p = new JPanel();
b = new JButton(bf);
p.add(b);
main.add(p);
main.setVisible(true);
main.setDefaultCloseOperation(main.EXIT_ON_CLOSE);
main.setSize(600,700);
}
}
И я скопировал рисунок с именем car.png в ту же папку, что и мой класс, но, похоже, я не могу заставить его работать в elipse.
Но когда я запускаю тот же самый точный код в BlueJ, он запускает его без каких-либо известных проблем. Заранее благодарю за любую помощь.
Комментарии:
1. Работает ли это, если вы используете абсолютный путь к изображению?
Ответ №1:
изменить
bf = new ImageIcon("car.png");
Для
URL url = Main.class.getResource("car.png");
bf = new ImageIcon(url);
Комментарии:
1. Спасибо вам ооочень большое.. Не могли бы вы, пожалуйста, объяснить, что я сделал не так?
2. ваши намерения не были ошибочными, но как вы могли бы указать путь к изображению из контекста, в котором была запущена ваша программа. Этот URL-адрес представляет собой не что иное, как абсолютный путь к вашему изображению, и это не исходное местоположение, а каталог, в котором ваши классы скомпилированы eclipse (выведите этот URL в syso, чтобы узнать это), проверьте каталог project-workspace / bin, вы найдете ваши скомпилированные классы (и ресурсы в исходных пакетах, если таковые имеются) в их соответствующих пакетах, которые также будут упакованы в jar. похоже, вы поместили свое изображение, а также файл src в пакет по умолчанию (eclipse не рекомендует).
Ответ №2:
Проверьте, что if car.png
находится в bin
каталоге файловой системы (в Eclipse он отфильтрован, поэтому сделайте это в проводнике файлов).
Кстати, я бы предложил использовать что-то вроде ImageIO.read(Main.class.getResource("/car.png"))
. Причина в следующем: позже вы, вероятно, упакуете свое приложение (например, в файл Jar). Теперь, если вы сделаете это таким образом, Java сможет найти изображение, даже если оно выполнено в виде Jar или из
Комментарии:
1. Да, я проверил это, и car.png был в корзине старше, в папке проектов
2. Я вспоминаю проблему, заключающуюся в том, что эти изображения обнаруживаются, только если они помещены в корневую папку проекта ( не в
src
папку).3. не могли бы вы уточнить, что вы подразумеваете под корневой папкой?
4. Папка, которая содержит
src
папку (theTest
folder).