JPanel删除颜色渐变

时间:2017-08-15 10:47:46

标签: java swing jpanel

我有以下问题:

我有自己的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

https://i.stack.imgur.com/hen6K.png

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

https://i.stack.imgur.com/k8eFl.png

2 个答案:

答案 0 :(得分:2)

  

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

使面板透明:

setOpaque( false );

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

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

答案 1 :(得分:0)

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