如何使用imageicon(JavaGUI)向JPanel添加图像?

如何使用imageicon(JavaGUI)向JPanel添加图像?,java,swing,user-interface,embedded-resource,imageicon,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

我看了所有的地方,但我仍然停留在目录如何工作,以找到图像放在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);

图片是否应该与项目位于同一个包文件中?或者,它应该是在源文件中才能做随机的.jpg?< /p> 如果你想在运行时对你的应用程序提供图像,那么你应该考虑在构建应用程序时确保图像包含在你的jar文件中。 听上去,您正在使用Netbeans,您应该将映像复制到项目的src目录中的一个目录中

然后你应该能够使用

BufferedImage bi = ImageIO.read(getClass().getResource("/full/path/to/image/random.jpg"));
ImageIcon image = new ImageIcon(bi);
映像的路径应该是项目中src目录上下文的完整路径

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


查看更多详细信息

getClass.getResource。。。将仅获取类路径内的资源

您可以像这样使用ImageIO.readFile:

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

请阅读Swing教程中的一节,以获得一个有效的示例。一旦您的问题得到回答,请不要破坏它。@Theodoroschatziganakis:仅供参考,他再次试图破坏一个问题。我已经通知了网站管理员。我们得看着他。我实际上在用eclipse。它在eclipse上的工作方式是否相同?文件在eclipse中的位置是不同的。它们不需要存储在src目录中,而需要存储在项目中与src相同位置的资源目录中,并包含在构建过程中。从运行时的角度来看,查找资源的过程是相同的……我似乎无法直接找到资源。它的标签是什么?我看到了src、bin、.settings文件、.classpath和.project。您需要创建它并将其添加到类路径和构建过程中。如何创建它?我是在eclipse上做的吗?请你一步一步地引导我。。。我已经在这一部分呆了好几天,想弄明白。谢谢,我将您在上面显示的代码中显示的部分代码粘贴到哪里?替换行ImageIcon image=new ImageIcongetClass.getResource;这有一个异常捕获并重试。会是什么?这是一个糟糕的答案;永远不要使用你自己的个人电脑的绝对路径!