Java JOptionPane.showMessageDialog自定义图标问题?

Java JOptionPane.showMessageDialog自定义图标问题?,java,image,dialog,popup,message,Java,Image,Dialog,Popup,Message,因此,我的应用程序中有一个弹出对话框,告诉用户有关该程序的信息。在定制图标出现之前,一切都很顺利。以下是我的尝试: 尝试1: JOptionPane.showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, new ImageIcon("home/user/Pictures/default.jpg")); final icon = new ImageIcon("home/user/

因此,我的应用程序中有一个弹出对话框,告诉用户有关该程序的信息。在定制图标出现之前,一切都很顺利。以下是我的尝试:

尝试1:

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

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

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

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

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

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

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

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

尝试5:

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

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


所有这些都对程序没有任何影响,我没有得到任何图像


详细信息:

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

    JOptionPane.showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);
final icon = new ImageIcon("home/user/Pictures/default.jpg"));
showMessageDialog(dialog, "Blah blah blah", "About", JOptionPane.INFORMATION_MESSAGE, icon);
  • 没有例外
  • 文件路径确实存在
  • 我的IDE不返回异常,也不返回任何类型的警告
  • 是的,我也尝试了路径/home/user/Pictures/default.jpg
  • .ico、.png、.jpg不起作用。不过,我现在对.gif不是很确定
救救我(

这里这可能会有所帮助:

这对我很有用:

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);
    }
}
试试这个:

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);

同样的事情也发生在我身上,谢天谢地,我看到我的图像不是加载在“源”文件中,而是加载在“bin”文件中。路径是错误的

ImageIcon preg1 = new ImageIcon("C:\\Java\\TestPsicologico\\bin\\Preg1.jpg"); 

我知道这有点陈旧,但由于没有回答我的问题,经过一些研究,这对我来说是有效的(使用java 1.7):

我使用的
getClass().getResource()
方法如下:

ImageIcon icon = new ImageIcon(getClass().getResource(<pathToIcon>));
ImageIcon图标=新的ImageIcon(getClass().getResource());

在我看来,在项目中创建一个“资源”文件夹,在其中创建一个“图标”文件夹,并在每次需要图标(或其他任何东西,如音频文件、图像等)时引用该位置是一个很好的做法。

每个人都是对的,只是复制的路径不正确

您只需将首选图像放入项目文件夹中即可 您的图像将显示在“项目导航”选项卡中,之后只需复制图像路径并将其粘贴到:

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


 JOptionPane.showMessageDialog(null, infoMessage, " " + titleBar, JOptionPane.INFORMATION_MESSAGE,icon);

您是否尝试过将
/home/user…
替换为
home/user…
,因为否则它会从您执行应用程序的位置查找主目录,而只有在
/
中执行应用程序时才会起作用。是的,您找的位置不对。您知道您的用户目录在哪里吗?
System.out.println(System.getProperty(“user.dir”))
另外,这是jar文件还是小程序?这是Eclipse编译的.class文件。您给我的命令返回null。它不应该返回任何内容。但它在控制台上打印了任何内容吗?这并不是说我不能这样做;我正试图使用JOptionPane的内置功能来显示图标。@Ken
JOptionPane.showMessageDialog(“whatever.gif”、“whatever”)
。这假设图标位于java进程的工作目录中。第二个源(使用URL)对我来说很有用。我很确定路径失败了,因为当前目录不是OP认为的地方。@Andrew:包括我在内的一些人已经试着对他说了一段时间,但他不相信我们。这就是为什么我试图让他知道他的用户目录在哪里,但他似乎忽略了我的评论。这s越来越令人沮丧。