2014-09-24 80 views
-1

我看遍了所有的地方,但我仍然停留在如何找到要放入JPanel的图像的目录。图像应该在哪里?我点击了我的图片的属性,它显示位置:C:\Users\Joseph\Pictures\Background,图片的名称是random.jpg如何使用imageicon(Java GUI)将图像添加到JPanel?

我想要的图像添加到使用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

从秋千教程阅读部分[如何使用图标](http://docs.oracle.com/javase/tutorial /uiswing/components/icon.html)作为一个工作示例。 – camickr 2014-09-24 03:10:54

+1

请一定回答后,不要破坏您自己的问题。 – 2014-09-24 07:12:00

+1

@TheodorosChatzigiannakis:FYI,他试图用[从今天这个问题(http://stackoverflow.com/questions/26210236/why-is-my-fillpolygon-shape-looking-odd-java-gui再搞破坏问题)。我已通知网站管理员。我们将不得不看他。 – 2014-10-06 22:35:51

回答

2

如果你想要的形象提供给您在运行应用程序,那么你应该考虑在确认图像包括你的瓶子内,当你的应用程序建立。

从它的声音,您使用的是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更多细节

+0

我实际上在使用eclipse。它会在eclipse上以相同的方式工作吗? – user3404854 2014-09-24 05:41:14

+0

Eclipse中文件的位置不同。而不是存储在'src'目录中,它们需要存储在项目的资源目录中(与src'相同的位置)并包含在构建过​​程中。从运行时的角度来看查找资源的过程是相同的... – MadProgrammer 2014-09-24 05:43:26

+0

我似乎无法直接找到资源。它被标记为?我看到src,bin,.settings文件,.classpath和.project。 – user3404854 2014-09-24 06:03:13

1

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

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

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

我在哪里粘贴你在上面显示的代码中显示的代码部分? – user3404854 2014-09-24 06:14:59

+0

替换行ImageIcon image = new ImageIcon(getClass()。getResource(“”)); – DiogoSantana 2014-09-24 06:15:59

+0

这有一个异常捕获并尝试。它会是什么? – user3404854 2014-09-24 06:55:54