如何使用imageicon(Java GUI)将图像添加到JPanel?

时间:2014-09-24 03:07:33

标签: java swing user-interface embedded-resource imageicon

我到处都看了,但我仍然坚持目录是如何找到要放到JPanel上的图像的。图像应该在哪里?我点击了我的图片的属性,它显示了位置:C:\Users\Joseph\Pictures\Background,图片的名称为random.jpg

我正在尝试使用tabbedPane将图像添加到选项卡。这是我到目前为止所做的,而且我无法做到。

JPanel flPanel = new JPanel();

flPanel.setLayout(new FlowLayout());

ImageIcon image = new ImageIcon(getClass().getResource("")); 
// Tried /Users/Joseph/Pictures/Background/random.jpg and doesn't work

JLabel j1 = new JLabel(image);

flPanel.add(j1);

tabbedPane.add("Tab 2", flPanel);

图片应该与项目位于同一个包文件中吗?或者它应该在源文件中才能够“random.jpg”?

2 个答案:

答案 0 :(得分:2)

如果您希望图像在运行时可供应用程序使用,那么您应该考虑在构建应用程序时确保图像包含在Jar中。

从它的声音来看,您正在使用Netbeans,您应该将图像复制到项目的src目录中的目录。

然后你应该可以使用......

BufferedImage bi = ImageIO.read(getClass().getResource("/full/path/to/image/random.jpg"));
ImageIcon image = new ImageIcon(bi);

图像的路径应该是项目中的完整路径(来自src目录的上下文)。

也就是说,如果您将图像放在resources目录中的src目录中,那么您将使用/resources/random.jpg作为路径/文件名

请查看Reading/Loading an Image了解详情

答案 1 :(得分:1)

getClass()。getResource(...)只会获取类路径内的资源。

您可以像这样使用ImageIO.read(文件):

BufferedImage bi = ImageIO.read(new File("C:\\Users\\Joseph\\Pictures\\Background\random.jpg"))
ImageIcon image = new ImageIcon(bi);