显示带有图像背景的GUI组件的问题

时间:2015-04-15 19:36:31

标签: java swing bluej

我已经为我的Java Applet添加了一个背景,我需要一些帮助来理解为什么applet没有正确显示。要显示此背景图片,我使用了以下代码:

BufferedImage img = null;

try {
            URL url = new URL(getCodeBase(), "Backgrounds/Background.png");
            img = ImageIO.read(url);
        }
        catch (Exception e) {

        }

然后还把它放在绘画方法中......

public void paint(Graphics g) {
    g.drawImage(img, 0, 0, null);
}

问题是,在绘制背景时,您无法看到GUI组件(如按钮和标签),即使在将其他GUI组件添加到内容窗格之前绘制了背景。可以显示组件,但必须先突出显示它们或单击它们。

此图显示了加载小程序时的小程序:

enter image description here

然后这是我在屏幕上的几个地方点击后的小程序:

enter image description here

1 个答案:

答案 0 :(得分:3)

public void paint(Graphics g) {
    g.drawImage(img, 0, 0, null);
}

首先,该方法调用应该是:

public void paint(Graphics g) {
    g.drawImage(img, 0, 0, this); // Every Component is an image observer
}

然后,修复破损的油漆链:

public void paint(Graphics g) {
    super.paint(g); // Draw the rest of the components!
    g.drawImage(img, 0, 0, this); // Every Component is an image observer
}