获取图像以Java显示

时间:2014-05-23 20:14:25

标签: 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 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);
}

1 个答案:

答案 0 :(得分:3)

为什么要创建自定义组件?如果您创建自定义组件,则还需要覆盖组件的getPreferredSize()方法以返回图像的大小,以便布局管理器可以将组件绘制为适当的大小。

因此组件的大小可能为零,因此无需绘制任何内容。

最简单的解决方案是将JLabelImageIcon一起使用,让布局管理器处理尺寸问题。