我正在尝试在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 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);
}
答案 0 :(得分:3)
为什么要创建自定义组件?如果您创建自定义组件,则还需要覆盖组件的getPreferredSize()
方法以返回图像的大小,以便布局管理器可以将组件绘制为适当的大小。
因此组件的大小可能为零,因此无需绘制任何内容。
最简单的解决方案是将JLabel
与ImageIcon
一起使用,让布局管理器处理尺寸问题。