首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPanel去除色差

JPanel去除色差
EN

Stack Overflow用户
提问于 2017-08-15 10:47:46
回答 2查看 389关注 0票数 0

我有以下问题:

我有自己的JPanel实例来创建ImageButton。当我设置一个背景时,它会自动添加一个颜色梯度,这会导致透明图像的背景不符合我的JFrame的颜色。

我怎样才能去除这个梯度?

代码语言:javascript
复制
public ImageButton(Runnable exec, boolean on) {
        super();

        setBackground(new Color(238,238,238));
        setVisible(false);
        switched_on = on;
        setSize(new Dimension(64, 64));
        setPreferredSize(new Dimension(64, 64));
        if(on) {
            img = ImageButton.on;
        }else{
            img = ImageButton.off;
        }
}

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(img, 0, 0, null);
}

截图: ImageButton

另一个截图,你能更好地看到梯度

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-17 08:55:33

我终于发现了问题。我试图在我的源中找到这个错误,但是相反,图像本身在左上角有一个白色的背景。

票数 0
EN

Stack Overflow用户

发布于 2017-08-15 14:23:29

当我设置一个背景时,它会自动添加一个颜色梯度,这会导致透明图像的背景不符合我的JFrame的颜色。

使面板透明:

代码语言:javascript
复制
setOpaque( false );

现在,图像和面板都是透明的,所以背景色将是ImagePanel的父组件的背景。

虽然一种更简单的方法是只使用JLabel。默认情况下,JLabel是透明的。然后,您只需使用setIcon(...)方法来更改图像。因此,不需要自定义绘画或自定义组件。

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

https://stackoverflow.com/questions/45691334

复制
相关文章

相似问题

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