Java JPanel上的透明背景图像

Java JPanel上的透明背景图像,java,swing,background,Java,Swing,Background,我已经成功上传了一张图片作为JPanel的背景,但我不知道如何让JPanel的孩子们适应它。例如,当我添加一个按钮或复选框时,它们的表面就会出现。 如何在没有矩形的情况下,将按钮添加到以图像为背景的jpanel中。 这是我的密码: public class BackgroundPanel extends JPanel{ BufferedImage backgroundImage; public BackgroundPanel() throws Exception

我已经成功上传了一张图片作为JPanel的背景,但我不知道如何让JPanel的孩子们适应它。例如,当我添加一个按钮或复选框时,它们的表面就会出现。 如何在没有矩形的情况下,将按钮添加到以图像为背景的jpanel中。 这是我的密码:

public class BackgroundPanel extends JPanel{

    BufferedImage backgroundImage;

    public BackgroundPanel() throws Exception
      {
        // load background image
        backgroundImage=javax.imageio.ImageIO.read(new java.io.File("/home/imanopholist/Bureau/bg17.jpg"));
        // set the panel size to the dimension of the background image
        int panelWidth=backgroundImage.getWidth(null);
        int panelHeight=backgroundImage.getHeight(null);
        setPreferredSize(new java.awt.Dimension(panelWidth,panelHeight));

      }
     public void paintComponent(java.awt.Graphics gr)
      {
        gr.drawImage(backgroundImage,0,0,null);

      }
     }
         // My panel :
          try {
            bgpanel=new BackgroundPanel();

            bgpanel.setLayout(null);
            bgpanel.setPreferredSize(new Dimension(785, 595));
            pan1.add(bgpanel);
            bgpanel.setVisible(true);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // My Label
        JLabel lblNbrServices = new JLabel("Number of Services");
        lblNbrServices.setFont(new Font("Tahoma", Font.BOLD, 12));
        lblNbrServices.setBounds(500, 110, 145, 29);
        bgpanel.add(lblNbrServices);
[接口]

可以使用BasicPanelUI完成。创建一个这样的

BasicPanelUI UI = new BasicPanelUI() {
    @Override
    public void paint(Graphics g, JComponent c) {
        g.drawImage(backgroundImage,0,0,null);                
    }
};
像这样连接到你的JPanel上

this.setUI(UI);

可以毫无问题地添加其他组件

将代码发布到目前为止,并给出一个预期结果以澄清;好了,完成了……它们的表面出现了……你是什么意思?截图?我试过了,但它告诉我,我需要10个声誉来发布一张图片。我的意思是,当我在黑色背景上添加复选框时,我可以在黑色背景上看到复选框的白色表面。我感谢您的帮助,但它不起作用。下面是我们所做的:公共类setBackgroundImage{static JPanel pane=new JPanel;static BufferedImage backg;static BasicPanelUI=new BasicPanelUI{@Override public void paintGraphics g,JComponent c{g.drawImagebackg,0,0,null;};JFrame frame=new JFrame;backg=ImageIO.readnew java.io.File/home/imanopholist/Bureau/bg.jpg;pane.setUIUI;pane.addnew jcheckboxsault*********;在设置UI之前加载了图像吗?看起来不像是我的邮件:blacky。white@live.fr,你能把你的发给我吗?我想给你看看我的代码和我做了什么。