Java JPanel删除颜色渐变

Java JPanel删除颜色渐变,java,swing,jpanel,Java,Swing,Jpanel,我有以下问题: 我有自己的JPanel实例来创建ImageButton。 当我设置背景时,它会自动添加颜色渐变,这会导致透明图像的背景与我的JFrame的颜色不匹配 如何删除此渐变 public ImageButton(Runnable exec, boolean on) { super(); setBackground(new Color(238,238,238)); setVisible(false); switched_on

我有以下问题:

我有自己的JPanel实例来创建ImageButton。 当我设置背景时,它会自动添加颜色渐变,这会导致透明图像的背景与我的JFrame的颜色不匹配

如何删除此渐变

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

另一个屏幕截图,您可以更好地看到渐变

当我设置背景时,它会自动添加颜色渐变,这会导致透明图像的背景与我的JFrame的颜色不匹配

使面板透明:

setOpaque( false );
现在,图像和面板都将是透明的,因此背景颜色将是ImagePanel的父组件的背景

尽管更简单的方法是只使用
JLabel
。默认情况下,
JLabel
是透明的。然后您可以使用
setIcon(…)
方法更改图像。因此,不需要定制绘画或定制组件

当我设置背景时,它会自动添加颜色渐变,这会导致透明图像的背景与我的JFrame的颜色不匹配

使面板透明:

setOpaque( false );
现在,图像和面板都将是透明的,因此背景颜色将是ImagePanel的父组件的背景


尽管更简单的方法是只使用
JLabel
。默认情况下,
JLabel
是透明的。然后您可以使用
setIcon(…)
方法更改图像。因此,不需要定制绘画或定制组件。

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

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

1)为了更快地获得更好的帮助,请发布一个或。2) 例如,获取图像的一种方法是热链接到中看到的图像。3)
g.drawImage(img,0,0,null)
应该是
g.drawImage(img,0,0,this)1)要更快获得更好的帮助,请发布或。2) 例如,获取图像的一种方法是热链接到中看到的图像。3) 
g.drawImage(img,0,0,null)
应该是
g.drawImage(img,0,0,this)