2017-08-15 47 views
0

我有以下问题:的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

+1

1)为了更好地提供帮助,请发布[MCVE]或[简短自包含正确示例](http://www.sscce.org/)。 2)获取图像的一种方法是通过[本问答](http://stackoverflow.com/q/19209650/418556)中的图像进行热链接。 3)'g.drawImage(img,0,0,null);'应该是'g.drawImage(img,0,0,this);' –

回答

0

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

2

当我设置的背景下,它会自动添加一个颜色渐变,这会导致透明图像具有一个不适合我的JFrame颜色的背景。

使面板透明:

setOpaque(false); 

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

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