1

我用来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")));

它可以很好地显示图像,但是当我尝试将图像添加到 myJOptionPane时,它没有显示任何内容。

4

1 回答 1

4

这与您之前的问题完全相同,但现在相反。关键是图像文件的位置关键是您现在将图像作为File获取,而之前您将其作为Resource获取,Java 在两个不同的地方查找这些图像。

现在文件必须位于用户目录之外的图像子目录中。您可以通过调用获取用户目录

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。

于 2012-07-01T05:36:57.277 回答