Как я могу использовать JLabels? - PullRequest
1 голос
/ 09 апреля 2011

Когда я пытаюсь создать JLabel, он отлично отображает текст и помещается внутри контейнера, но если я пытаюсь добавить изображение к метке, ничего не появляется.

ImageIcon icon = new ImageIcon("../media/link_walk.png", "hh");
JLabel j = new JLabel("hello");
j.setIcon(icon);
p.add(j);

Ответы [ 2 ]

3 голосов
/ 09 апреля 2011

Если ваше приложение. находится в файлах Jar, а изображение является ресурсом приложения, оно также будет в файле Jar.

Конструктор ImageIcon, который принимает String, предполагает, что String представляет путь / имя файла. Объект File не может быть установлен для ресурса в банке. Для ресурсов в банке необходимо получить к ним доступ URL.

Чтобы получить URL что-то в банке, используйте что-то вроде ..

URL urlToImage = this.getClass().getResource("/media/link_walk.png");
// Check the URL!
System.out.println("urlToImage is " + urlToImage);

Затем используйте конструктор ImageIcon, который принимает URL.

1 голос
/ 09 апреля 2011

JLabels не являются непрозрачными по умолчанию, и поэтому изменения цвета фона не будут видны, если вы не сделаете их непрозрачными через setOpaque (true). Также предпочитаемый размер JLabel будет зависеть от текста, который он содержит.

...