将图像设置为前端Java中的前景保持组件

将图像设置为前端Java中的前景保持组件,java,Java,我有一个JPanel,它包含几个J组件,问题是如果我用下面的代码设置一个背景图像,它覆盖了屏幕截图显示的所有组件,我如何修复它 private ImageIcon imagen; private Image camiones; public PanelInicio(){ imagen = new ImageIcon("imagenes/imagenprincipal.jpg"); camiones=imagen.getImage(); } public void paint(

我有一个JPanel,它包含几个J组件,问题是如果我用下面的代码设置一个背景图像,它覆盖了屏幕截图显示的所有组件,我如何修复它

private ImageIcon imagen;
private Image camiones;

public PanelInicio(){
    imagen = new ImageIcon("imagenes/imagenprincipal.jpg");
    camiones=imagen.getImage();
}

public void paint(Graphics g){
    super.paint(g);
    g.drawImage(camiones, 0, 0, this.getWidth(), this.getHeight(), this);
}
截图:

-无背景的JPanel


-JPanel没有背景(唯一可见的组件是JTextField,因为它得到了关注)

我一直很幸运地使用它在内容面板上创建背景图像;我注意到我的类重写了paintComponent(),而你的类重写了paint()。不知道这是不是不同

class ImageBackgroundPanel extends JPanel {
      BufferedImage image;

      ImageBackgroundPanel(BufferedImage image) {
            this.image = image;
      }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }
}


public class Gui extends JFrame
{

    ImageBackgroundPanel content;

    public  Gui()
    {
        BufferedImage img = null;
        try {
            img = ImageIO.read(new File(<path to the file "imagenprincipal.jpg">));
        } catch (IOException e) {
    }
    content = new ImageBackgroundPanel(img);
.
.
class ImageBackgroundPanel扩展了JPanel{
缓冲图像;
ImageBackgroundPanel(BuffereImage图像){
这个图像=图像;
}
@凌驾
受保护组件(图形g){
超级组件(g);
g、 drawImage(图像,0,0,this);
}
}
公共类Gui扩展JFrame
{
图像背景面板内容;
公共图形用户界面()
{
BuffereImage img=null;
试一试{
img=ImageIO.read(新文件());
}捕获(IOE异常){
}
内容=新图像背景面板(img);
.
.
我认为:“分层窗格[…]支持对其他组件进行Z排序”,可能会有所帮助。