【问题标题】:Java JOptionPane.showMessageDialog custom icon problem?Java JOptionPane.showMessageDialog 自定义图标问题?
【发布时间】:2011-10-21 23:44:21
【问题描述】:

所以我的应用程序中有一个弹出对话框告诉用户该程序。在自定义图标之前一切都很好。这是我尝试过的:

尝试 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:

(对着 java 尖叫)

尝试 5:

使用网址


所有对程序都没有影响,而不是图像,我什么都没有。


详情:

  • 没有例外
  • 文件路径确实存在
  • 我的 IDE 不返回异常,也不返回任何类型的警告
  • 是的,我也试过路径/home/user/Pictures/default.jpg
  • .ico、.png、.jpg 不起作用。不过,我现在对 .gif 不太确定。

帮帮我! :(

【问题讨论】:

  • 您是否尝试过使用/home/user... 而不是home/user...,否则它会从您执行应用程序的位置查找主目录,只有在/ 中执行它时才有效。
  • 是的,你没有找对地方。你知道你的用户目录在哪里吗? System.out.println(System.getProperty("user.dir"));
  • 另外,这是在 jar 文件中还是在小程序中?
  • 这是一个由Eclipse编译的.class文件。你给我的命令返回null。
  • 它不应该返回任何东西。它会在控制台上打印出任何内容吗?

标签: java image dialog popup message


【解决方案1】:

这对我有用:

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

【讨论】:

  • 第二个来源(使用 URL)对我有用。我很确定路径失败了,因为当前目录不是 OP 认为的位置。
  • @Andrew:包括我在内的几个人一直试图对他这么说,但他不相信我们。这就是为什么我试图让他查看他的用户目录在哪里,但他似乎忽略了我的评论。这越来越令人沮丧。
【解决方案2】:

我知道这有点老了,但是由于没有回答可以解决我的问题,经过一些研究,这对我有用(使用 java 1.7):

我使用过这样的getClass().getResource(<path>) 方法:

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

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

【讨论】:

    【解决方案3】:

    【讨论】:

    • 不是我做不到;我正在尝试使用 JOptionPane 的内置功能来显示图标。
    • @Ken JOptionPane.showMessageDialog("whatever.gif","whatever")。这是假设图标在 java 进程的工作目录中。
    【解决方案4】:

    试试这个:

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

        大家说的都对,只是复制的路径不对。

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

        final ImageIcon icon = new ImageIcon("*Paste copied path*");
        
        
         JOptionPane.showMessageDialog(null, infoMessage, " " + titleBar, JOptionPane.INFORMATION_MESSAGE,icon);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-01-09
          • 2012-07-29
          • 1970-01-01
          • 2018-02-15
          • 1970-01-01
          • 2020-01-24
          • 2021-05-22
          相关资源
          最近更新 更多