java - 如何让JFrame背景图片透明?

标签 java swing graphics jframe jpanel

目前,我正在使用此代码为我的 JFrame 生成背景图像:

    BufferedImage myImg = ImageIO.read(myUrl);
    this.setContentPane(new ImagePanel(myImg));

    //ImagePanel class
    public class ImagePanel extends JComponent {
        private Image image;
        public ImagePanel(Image image) {
            this.image = image;
        }

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

因此,图像覆盖了 JFrame 中的所有内容。如何切换正在绘制的图像的透明度,以便在将图像设置为背景时仍然可以看到我的内容?

最佳答案

您为什么一直谈论透明度?如果您要在组件的“顶部”绘制图像,您只会关心透明度。

如果您想在框架上添加背景图像,则可以将该图像添加到面板中,然后将面板添加到框架中。然后将其他组件添加到背景面板,以便这些组件显示在图像顶部。

这与透明度无关。

背景面板通常是 JPanel,而不是 JComponent,因为面板被设计为用作容器。

参见Background Panel举个例子。

您不能仅更改图像以使其透明。您需要加载具有透明像素的图像。

关于java - 如何让JFrame背景图片透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17016656/

相关文章:

java - 从 fcm 获取我的网站的注册设备列表

java - 简单的Java GUI程序

java - 将单元格合并到 MigLayout?

graphics - 在相机小部件顶部显示 mask 区域

java - 如何确定用于绘制折线图的一系列数字的正确域?

java - 如何查询Ldap以获取结果中的用户属性并将其用于自动填写JSF2.0表单

java - 在单个 Activity 中设置两个 fragment

graphics - 理解 glm::透视矩阵

java - 如何确保字符串输入不是数字?

java - PaintComponent 中的 Object.draw 本身不起作用