获取要在Java中显示的图像
我试图在JFrame中显示背景图像,但是图像没有显示,并且我找不到代码中的错误获取要在Java中显示的图像,java,image,swing,graphics,javax.imageio,Java,Image,Swing,Graphics,Javax.imageio,我试图在JFrame中显示背景图像,但是图像没有显示,并且我找不到代码中的错误 public class GraphicsComponent extends JComponent { int xPosition = 200;//initializes and declares the x coordinate int yPosition = 400;//initializes and declares the y coordinate Image i; public G
public class GraphicsComponent extends JComponent
{
int xPosition = 200;//initializes and declares the x coordinate
int yPosition = 400;//initializes and declares the y coordinate
Image i;
public GraphicsComponent()
{
try{
File sky = new File("lib/background.png");
i = ImageIO.read(sky);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void paintComponent(Graphics g) //overrides paintComponent method in JComponent
{
if (i == null) return;
g.drawImage(i, 0, 0, this);
}
为什么要创建自定义组件?如果创建自定义组件,则还需要重写组件的
getPreferredSize()
方法,以返回图像的大小,以便布局管理器可以以适当的大小绘制组件
因此,组件的大小可能为零,因此没有要绘制的内容
最简单的解决方案是只使用带有
图像图标的JLabel
,让布局管理器处理大小问题。为什么要创建自定义组件?如果创建自定义组件,则还需要重写组件的getPreferredSize()
方法,以返回图像的大小,以便布局管理器可以以适当的大小绘制组件
因此,组件的大小可能为零,因此没有要绘制的内容
最简单的解决方案是只使用带有图像图标的JLabel
,让布局管理器处理大小问题。为什么要创建自定义组件?如果创建自定义组件,则还需要重写组件的getPreferredSize()
方法,以返回图像的大小,以便布局管理器可以以适当的大小绘制组件
因此,组件的大小可能为零,因此没有要绘制的内容
最简单的解决方案是只使用带有图像图标的JLabel
,让布局管理器处理大小问题。为什么要创建自定义组件?如果创建自定义组件,则还需要重写组件的getPreferredSize()
方法,以返回图像的大小,以便布局管理器可以以适当的大小绘制组件
因此,组件的大小可能为零,因此没有要绘制的内容
最简单的解决方案是只使用带有图像图标的JLabel
,让布局管理器处理大小问题。主程序中有什么。你能发布完整的代码吗。如何将其添加到JFrame
?图像位于何处?它是位于src/应用程序上下文中还是相对于程序的执行?是否引发异常?您还应该调用super.paintComponent,特别是对于JComponent,因为默认情况下它是透明的。到部署时,这些资源很可能会成为一个组件。在这种情况下,必须通过URL
而不是File
访问资源。请参阅标签,了解形成URL
的方法。主程序中有什么。您可以发布完整的代码吗。如何将其添加到JFrame
?图像位于何处?它是位于src/应用程序上下文中还是相对于程序的执行?是否引发异常?您还应该调用super.paintComponent,特别是对于JComponent,因为默认情况下它是透明的。到部署时,这些资源很可能会成为一个组件。在这种情况下,必须通过URL
而不是File
访问资源。请参阅标签,了解形成URL
的方法。主程序中有什么。您可以发布完整的代码吗。如何将其添加到JFrame
?图像位于何处?它是位于src/应用程序上下文中还是相对于程序的执行?是否引发异常?您还应该调用super.paintComponent,特别是对于JComponent,因为默认情况下它是透明的。到部署时,这些资源很可能会成为一个组件。在这种情况下,必须通过URL
而不是File
访问资源。请参阅标签,了解形成URL
的方法。主程序中有什么。您可以发布完整的代码吗。如何将其添加到JFrame
?图像位于何处?它是位于src/应用程序上下文中还是相对于程序的执行?是否引发异常?您还应该调用super.paintComponent,特别是对于JComponent,因为默认情况下它是透明的。到部署时,这些资源很可能会成为一个组件。在这种情况下,必须通过URL
而不是File
访问资源。请参阅标签,了解形成URL
的方法。每个人都是这样做的,为什么不知道为什么:)我尝试使用它,但由于某些原因它仍然没有显示:JLabel iconLabel=new JLabel(new ImageIcon(“background.png”);frame.add(iconLabel)@用户2963365,发布演示如何使用JLabel的日志。确保在使框架可见之前将标签添加到框架中。每个人都是这样做的,为什么不知道原因:)我尝试过使用它,但由于某种原因它仍然没有显示:JLabel iconLabel=new JLabel(new ImageIcon(“background.png”);frame.add(iconLabel)@用户2963365,发布演示如何使用JLabel的日志。确保在使框架可见之前将标签添加到框架中。每个人都是这样做的,为什么不知道原因:)我尝试过使用它,但由于某种原因它仍然没有显示:JLabel iconLabel=new JLabel(new ImageIcon(“background.png”);frame.add(iconLabel)@用户2963365,发布演示如何使用JLabel的日志。确保在使框架可见之前将标签添加到框架中。每个人都是这样做的,为什么不知道原因:)我尝试过使用它,但由于某种原因它仍然没有显示:JLabel iconLabel=new JLabel(new ImageIcon(“background.png”);frame.add(iconLabel)@用户2963365,发布演示如何使用JLabel的日志。确保在使框架可见之前将标签添加到框架中。