繁体   English   中英

JPanel上的透明背景图像

[英]Transparent Background image on a JPanel

我已经成功上传了图像作为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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM