Java JFrame背景图像&引用;文件系统中的绝对路径;

Java JFrame背景图像&引用;文件系统中的绝对路径;,java,image,swing,embedded-resource,Java,Image,Swing,Embedded Resource,我正在Eclipse中使用WindowBuilder创建GUI,并搜索了如何添加背景图像的方法。一些人建议使用JLabel。中有一个名为icon的标签选项,我可以将其设置为“文件系统中的绝对路径”中的图像,但此选项会发出警告,禁止在实际应用中使用。我想这是因为如果在另一台电脑上打开应用程序,程序无法找到图像 如何添加可在已部署应用程序中使用的映像 您可以将图像作为资源包含在应用程序中,当您导出程序时,应用程序会将其包含在Jar文件中。您可以使用Class#getResource加载这些(嵌入式)

我正在Eclipse中使用WindowBuilder创建GUI,并搜索了如何添加背景图像的方法。一些人建议使用
JLabel
。中有一个名为icon的标签选项,我可以将其设置为“文件系统中的绝对路径”中的图像,但此选项会发出警告,禁止在实际应用中使用。我想这是因为如果在另一台电脑上打开应用程序,程序无法找到图像


如何添加可在已部署应用程序中使用的映像

您可以将图像作为资源包含在应用程序中,当您导出程序时,应用程序会将其包含在Jar文件中。您可以使用
Class#getResource
加载这些(嵌入式)资源,将其添加到jar中,并作为一个组件访问。嵌入式资源必须通过URL而不是文件进行访问。有关如何形成URL的信息,请参见。正如@MadProgrammer;)所建议的那样“一些人建议使用
JLabel
。在标签中有一个名为icon的选项,我可以将其设置为图像…”这是一种方法,但它(至少)有两个缺点。1) 标签将只考虑其自身图标(和文本)的大小。当更多的组件添加到它上面时,它不会变大。2) 图像不随GUI调整大小。-这两个问题都可以通过使用自定义面板绘制图像来解决。您可以将图像作为资源包含在应用程序中,当您导出程序时,应用程序会将其包含在Jar文件中。您可以使用
Class#getResource
加载这些(嵌入式)资源,将其添加到jar中,并作为一个组件访问。嵌入式资源必须通过URL而不是文件进行访问。有关如何形成URL的信息,请参见。正如@MadProgrammer;)所建议的那样“一些人建议使用
JLabel
。在标签中有一个名为icon的选项,我可以将其设置为图像…”这是一种方法,但它(至少)有两个缺点。1) 标签将只考虑其自身图标(和文本)的大小。当更多的组件添加到它上面时,它不会变大。2) 图像不随GUI调整大小。-这两个问题都可以通过使用自定义面板绘制图像来解决。