Java JOptionPane.showMessageDialog проблема с пользовательским значком? - PullRequest
7 голосов
/ 08 августа 2011

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

Попытка 1:

JOptionPane.showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, new ImageIcon("home/user/Pictures/default.jpg"));

Попытка 2:

final icon = new ImageIcon("home/user/Pictures/default.jpg"));

    JOptionPane.showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);

Попытка 3:

final icon = new ImageIcon("home/user/Pictures/default.jpg"));
showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);

Попытка 4:

(Кричать на Яве)

Попытка 5:

Использование URL-адресов


Все они никак не повлияли на программу, и вместо изображения я ничего не получил.


Подробности:

  • Без исключений
  • Путь к файлу существует
  • Моя среда IDE не возвращает исключений, НИКОГДА никаких предупреждений любого рода
  • Да, я поставил также пробовал путь /home/user/Pictures/default.jpg
  • .ico's, .png, .jpg не работают.Я не очень уверен насчет .gif сейчас.

Помоги мне!: (

Ответы [ 6 ]

9 голосов
/ 08 августа 2011

Это сработало для меня:

import javax.swing.*;

public class Test
{
    public static void main(String[] args)
    {
        final ImageIcon icon = new ImageIcon("C:\\Users\\John\\Desktop\\lol.jpg");
        JOptionPane.showMessageDialog(null, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);
    }
}

Вот вариант, который использует URL:

import javax.swing.*;
import java.net.*;

public class TestIcon
{
    public static void main(String[] args) throws Exception
    {
        final ImageIcon icon = new ImageIcon(new URL("http://www.gravatar.com/avatar/a1ab0af4997654345d7a949877f8037e?s=128&d=identicon&r=PG"));
        JOptionPane.showMessageDialog(null, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);
    }
}
3 голосов
/ 03 февраля 2014

Я знаю, что это немного старо, но поскольку не было ответа, который решил мой вопрос, после некоторого исследования это то, что мне помогло (работа с Java 1.7):

Я использовал getClass().getResource(<path>) метод, подобный следующему:

ImageIcon icon = new ImageIcon(getClass().getResource(<pathToIcon>));

Мне представляется хорошей практикой создавать папку «ресурсы» в вашем проекте, а внутри нее - папку «значки» и каждый раз ссылаться на это местоположение.когда вам нужен значок (или что-либо еще, например, аудиофайлы, изображения и т. д.)

0 голосов
/ 19 мая 2016

Все были правы, просто скопированный путь неверен.

Вам просто нужно разместить нужное изображение в папке проекта и ваше изображение появится на вкладке навигации проекта, после этого просто скопируйте путь к изображению и вставьте его в:

final ImageIcon icon = new ImageIcon("*Paste copied path*");


 JOptionPane.showMessageDialog(null, infoMessage, " " + titleBar, JOptionPane.INFORMATION_MESSAGE,icon);
0 голосов
/ 19 февраля 2012

То же самое случилось со мной, слава Богу, я посмотрел, что мое изображение было загружено не в файл 'source', а в файл 'bin' .. путь был неправильный

ImageIcon preg1 = new ImageIcon("C:\\Java\\TestPsicologico\\bin\\Preg1.jpg"); 
0 голосов
/ 08 августа 2011

Попробуйте это:

JPanel panel = new JPanel();
BufferedImage myPicture = null;
try
{
    myPicture = ImageIO.read(new File("home/user/Pictures/default.jpg"));
}
catch(Exception ex){}
panel.add(new JLabel(new ImageIcon(myPicture)));
panel.add(new JLabel("blah blah blah"));
Object[] options = {};
JOptionPane pane = new JOptionPane();
pane.showOptionDialog(null, panel, "About", JOptionPane.NO_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, null);
0 голосов
/ 08 августа 2011
...