如何在Netbeans中的JOptionPane中显示图像

时间:2012-07-01 05:24:30

标签: java swing netbeans joptionpane imageicon

我在JGrasp中用来显示图片的代码在Netbeans中不起作用

我在JGrasp中使用的代码是

final ImageIcon icon1 = new ImageIcon("image/money.gif");
JOptionPane.showMessageDialog(null, " blah blah", "Text",
   JOptionPane.INFORMATION_MESSAGE,   icon1);

如果我想在JOptionPane.showInputDialog中展示图片,JOptionPane.showMessageDialog是否会相同?

非常感谢任何帮助!

编辑:我不认为位置是问题,因为当我这样做时

menuPic = new javax.swing.JButton();
menuPic.setIcon(new javax.swing.ImageIcon(
    getClass().getResource("image/money.gif")));

它显示图像正常,但当我尝试将图像添加到JOptionPane时,它没有显示任何内容。

1 个答案:

答案 0 :(得分:4)

这与您previous question中的问题完全相同,但现在反过来了。关键是其中是位于的图像文件。关键是,您现在将图像作为文件获取,而之前您将其作为资源获取,并且Java在两个不同的位置查找。

现在这些文件必须位于用户目录之外的image子目录中。您可以通过调用

来获取用户目录
System.out.println(System.getProperty("user.dir"));

获得用户目录后,向其添加“/image/money.gif”,这是图像的路径 文件 (同样,不是资源就像你在上一个例子中所做的那样。)

修改
关于你的评论:

  

我不认为这个位置是问题,因为当我这样做时

     

menuPic = new javax.swing.JButton();      menuPic.setIcon(new javax.swing.ImageIcon(getClass()。getResource(“image / money.gif”)));

     

它显示图像正常,但是当我尝试将图像添加到我的joptionpane时它没有显示任何内容

当然 - 这就是我想说的话。在第二个实例中,您将图像作为资源而不是文件获取,这使得Java查找jpg文件的位置与 巨大 区别。

如果对于你的JOptionPane,你将图像作为资源查找,它将正常工作,因为你知道jpg资源的位置。即,这可能会奏效:

// final ImageIcon icon1 = new ImageIcon("image/money.gif");
final ImageIcon icon1 = new javax.swing.ImageIcon(getClass().getResource("image/money.gif"))
JOptionPane.showMessageDialog(null, " blah blah", "Text",
   JOptionPane.INFORMATION_MESSAGE,   icon1);

但是如果你想将你的图像作为文件找到 - 有时这是必要的,首先你必须找到我上面提到的user.dir。