首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过图像透明性Java查看JButton

通过图像透明性Java查看JButton
EN

Stack Overflow用户
提问于 2018-07-27 08:58:15
回答 1查看 31关注 0票数 1

我正在尝试添加一个图像到一个JButton,这样用户就可以通过JButton的透明部分看到png表面并单击动画。

下面是该按钮的代码:

代码语言:javascript
复制
grid.add(new JPanel(){{
    setLayout(new BorderLayout());
    add(new JButton() {{
        setLayout(new BorderLayout());
        setBorder(new EmptyBorder(0, 0, 0, 0));
        add(new JImageComponent(new ImageIcon(this.getClass().getResource("/Center.png"))));
    }});
}});

JImageComponent是我自己拼凑出来的swing图像组件。下面是它的代码:

代码语言:javascript
复制
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.image.BufferedImage;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class JImageComponent extends JPanel {

    Image image;

    public JImageComponent(ImageIcon img) {
        BufferedImage imgs;
        setBorder(BorderFactory.createLineBorder(Color.black));
        setPreferredSize(new Dimension(1000, 1000));
        image = img.getImage();
        repaint();
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        //Container parent = getParent();
        Image scaledImage = image.getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT);
        MediaTracker tracker = new MediaTracker(new java.awt.Container());
        tracker.addImage(scaledImage, 0);
        try {
            tracker.waitForAll();
        } catch (InterruptedException ex) {
            throw new RuntimeException("Image loading interrupted", ex);
        }
        g.drawImage(scaledImage, 0, 0, this);
    }
}

结果如下所示:

我想让JButton的“金属”蓝色穿过中央排最左边的黑色正方形的中心。

这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 09:17:07

在JImageComponent上调用setOpaque(false)

默认情况下,Swing会看到您在按钮上呈现,因此它跳过绘制按钮。设置opaque false会告诉Swing您正在绘制的内容不是不透明的,并且它不能跳过渲染它后面的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51549364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档