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

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

发布于 2017-08-17 08:55:33
我终于发现了问题。我试图在我的源中找到这个错误,但是相反,图像本身在左上角有一个白色的背景。
发布于 2017-08-15 14:23:29
当我设置一个背景时,它会自动添加一个颜色梯度,这会导致透明图像的背景不符合我的JFrame的颜色。
使面板透明:
setOpaque( false );现在,图像和面板都是透明的,所以背景色将是ImagePanel的父组件的背景。
虽然一种更简单的方法是只使用JLabel。默认情况下,JLabel是透明的。然后,您只需使用setIcon(...)方法来更改图像。因此,不需要自定义绘画或自定义组件。
https://stackoverflow.com/questions/45691334
复制相似问题