我在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
时,它没有显示任何内容。
答案 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。