Java Swing的背景图像

Java Swing的背景图像,java,swing,Java,Swing,可能重复: 以前也有人问过类似的问题,但这有点不同。我想知道是否有人知道如何在swing中设置JPanel/JFrame的背景。我最终需要在这个图像上放置按钮和文本字段。到目前为止,这里的所有解决方案都是将图像添加到一个JPanel中,当我使用GridLayout等时,它不起作用。您可以通过继承它来创建一个自定义JPanel,它将给定的图像绘制为背景。这是代码。以下是一个例子: public class ImagePanel extends JPanel { private Image i

可能重复:


以前也有人问过类似的问题,但这有点不同。我想知道是否有人知道如何在swing中设置JPanel/JFrame的背景。我最终需要在这个图像上放置按钮和文本字段。到目前为止,这里的所有解决方案都是将图像添加到一个JPanel中,当我使用GridLayout等时,它不起作用。

您可以通过继承它来创建一个自定义JPanel,它将给定的图像绘制为背景。这是代码。以下是一个例子:

public class ImagePanel extends JPanel {
  private Image img;

  public ImagePanel(String img) {
    this(new ImageIcon(img).getImage());
  }

  public ImagePanel(Image img) {
    this.img = img;
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
    setPreferredSize(size);
    setMinimumSize(size);
    setMaximumSize(size);
    setSize(size);
    setLayout(null);
  }

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

@Matthew Kemnetz我投票赞成以重复的方式结束这个问题too@AndrewThompson是的。我在你链接的时候实现了它。问题是,它将图像添加到帧中,而不是使其成为我可以覆盖按钮的背景…@andrewhompson我将删除我的问题,但我不知道如何使其成为帧的背景…好的,我找到了如何使其工作的方法。这是我与swing的第一个项目,所以它很艰难。但现在我必须将顶部JPanel的背景设置为透明,以便您可以看到我的背景图像。当我尝试使用gui.setOpaque(false)将背景图像设置为透明时,使用此代码不起作用,图像不会填充面板,内容也不会被绘制。顺便说一句1)当
图像面板
需要
图像
时,指定一个
图像
作为构造函数的参数,并停止使用
字符串
参数(我最讨厌的参数)。2) 尺寸(首选/最大/最小)仅是布局可能强制执行或可能不强制执行的建议。3)
JPanel
实现了
ImageObserver
,因此可以用作
getWidth(ImageObserver)
getHeight(ImageObserver)
的参数。请考虑阅读更多的回答,然后在你没有经验的话题上加上答案。@安德鲁汤普森+ 1的教育情绪:- AndrewThompson:谢谢你的信息。谢谢你解释我的错误。你对这件事很客气。有了这样的常识,我可以想象自己在不久的将来会投票给你的一些答案,我期待着投票