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:谢谢你的信息。谢谢你解释我的错误。你对这件事很客气。有了这样的常识,我可以想象自己在不久的将来会投票给你的一些答案,我期待着投票