我到处都看了,但我仍然坚持目录是如何找到要放到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”?
答案 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);